Outils pour utilisateurs

Outils du site


python:programmes:find

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
python:programmes:find [2019/07/28 17:22] – [os.scandir] rootpython:programmes:find [2019/07/29 17:27] (Version actuelle) – [os.scandir] root
Ligne 26: Ligne 26:
  
 ===== os.scandir ===== ===== os.scandir =====
-C'est la méthode la plus performante et rapidité et en souplesse de code:+C'est la méthode la plus performante (des builtins modules) en rapidité et en souplesse de code:
  
 +Exemple pour trouver les fichiers **suid** d'un répertoire avec **crossmount** activé ou désactivé (option **xdev** de la commande **find**) :
 <code python find.py> <code python find.py>
-def find(root):+def find(path, crossmount=True): 
 +    dev = os.stat(path).st_dev
     try:     try:
-        for entry in os.scandir(root):+        for entry in os.scandir(path):
             if entry.is_dir() and not entry.is_symlink():             if entry.is_dir() and not entry.is_symlink():
-                for result in find2(entry.path):+                if not crossmount and entry.stat().st_dev != dev: 
 +                    continue 
 +                for result in find(entry.path, crossmount=crossmount):
                     yield result                     yield result
                 yield entry                 yield entry
Ligne 41: Ligne 45:
         print(e, file=sys.stderr)         print(e, file=sys.stderr)
  
-{ print(f.pathfor f in find('/home/gigix') if f.is_file() and f.stat().st_mode & stat.S_ISUID }+# Search suid files 
 +for suid in (f.path for f in find('/home/gigix', crossmount=False) if f.is_file() and f.stat().st_mode & stat.S_ISUID == stat.S_ISUID) 
 +    print(suid)
 </code> </code>
  
-Recherche les fichier setuid:+Recherche les fichiers qui ont un **//setuid//** de positionné:
 <xtermrtf> <xtermrtf>
 $ ./find.py $ ./find.py
Ligne 60: Ligne 66:
  
  
-===== os.scandir =====+===== os.listdir =====
 C'est la méthode la moins performante: C'est la méthode la moins performante:
  
Ligne 77: Ligne 83:
         print(e, file=sys.stderr)         print(e, file=sys.stderr)
 </code> </code>
 +
 +===== faster-than-walk =====
 +C'est un module externe [[https://pypi.org/project/faster-than-walk/|faster-than-walk]] et est le plus rapide (plus que **os.scandir**).
python/programmes/find.1564334560.txt.gz · Dernière modification : 2019/07/28 17:22 de root