(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.