(5 réponses)
Fermé il y a 4 ans.
Comment puis-je rechercher dans tout mon système de fichiers Linux tous les fichiers python (fichiers avec l'extension .py ) ? Je sais que je peux faire find -name filename mais comment puis-je le faire pour le type de fichier ?
Réponse acceptée :
Tous les fichiers python n'auront pas l'extension de fichier .py – Essayez d'exécuter grep -rni python /usr/bin par exemple). La plupart de ces scripts auront une ligne "shebang" (ou hashbang) (par exemple, #!/usr/bin/env python , #!/usr/bin/python2.7 ). Cela informe l'interpréteur du script quel programme doit être utilisé pour l'exécuter, et vous pouvez le rechercher pour trouver des fichiers python
Cependant, vous pouvez également utiliser le type mime du fichier (généralement du type text/x-python ) pour le trouver :
find / -type f | while read in ; do if file -i "${in}" | grep -q x-python ; then echo "${in}" ; fi ; done
Où / est votre répertoire de recherche prévu.
Avec find vous pouvez également ajouter le -executable option pour rechercher uniquement les fichiers exécutables. Aussi l'utilisation de -type f restreindre la recherche pour rechercher uniquement les fichiers - vous pouvez modifier cela, puis afficher également les liens symboliques, etc. (certains scripts sont contenus dans /usr/lib etc et lié symboliquement à /usr/bin/ etc) . De nombreuses autres options sont disponibles, vous pouvez les voir en exécutant man find .
file devrait pouvoir deviner le type de fichier même si le fichier n'a pas d'extension, etc. (en utilisant la ligne shebang, etc.) - voir ici.
Pour supprimer toute find: ‘/.../FILE’: Permission denied etc, vous pouvez exécuter le script en tant que root (en utilisant sudo bash -c "COMMAND" , en ouvrant un shell avec sudo su etc), et/ou ajoutez simplement 2>/dev/null à la commande de recherche.