#!/usr/bin/env python3 # -*- coding: utf-8 -*- print(''); import sys, os, subprocess, re, ctypes, tempfile, shutil, tarfile, urllib.request; argsCount=len(sys.argv); scriptDir = os.path.dirname(os.path.abspath(sys.argv[0])); def FindFullPaths(strPattern, *orderedSearchDirs, \ findFile=True, findDir=False, \ ignoreCase=False, returnFirst=True): print('# FindFullPaths__In'); result = []; def resultAppendUnique(item): if item not in result: result.append(item); pattern = re.compile(strPattern, \ re.IGNORECASE | re.DOTALL if ignoreCase else re.DOTALL); isFound = False; for searchDir in orderedSearchDirs: print('#searchDir', searchDir, orderedSearchDirs, '\n'); for leafName in os.listdir(searchDir): leafPath = os.path.join(searchDir, leafName); isDir = os.path.isdir(leafPath); isFound = (findDir and isDir or \ findFile and os.path.isfile(leafPath)) \ and pattern.search(leafName) is not None; print('#leafPath:', leafPath, '\n'); #ERROR = output Last AND last time - no in output! print('#isFound:', isFound); #ERROR = output First AND first time - no in output! if isFound: resultAppendUnique(leafPath); if isDir and not (returnFirst and isFound): for partLeafPath in FindFullPaths(strPattern, leafPath, \ findFile=findFile, findDir=findDir, \ ignoreCase=ignoreCase, returnFirst=returnFirst): resultAppendUnique(partLeafPath); isFound = True; if returnFirst and isFound: break; if returnFirst and isFound: break; print('# FindFullPaths__Return'); return result; FindFullPaths('^bat$', '/home/user/Рабочий стол/ttt'); print(sys.version);