web-dev-qa-db-fra.com

Trouver tous les fichiers python dans le système de fichiers linux

Comment rechercher dans tout mon système de fichiers Linux pour 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?

5

Tous les fichiers python n'auront pas l'extension .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). Ceci informe l'interprète du script du programme devant être utilisé pour l'exécuter. Vous pouvez le rechercher pour trouver les fichiers python.

Cependant, vous pouvez également utiliser le type MIME du fichier (généralement le long de 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

/ est votre répertoire de recherche prévu.

Avec find, vous pouvez également ajouter l'option -executable pour rechercher uniquement les fichiers exécutables. Également, l'utilisation de -type f restreint la recherche à la recherche de fichiers uniquement - vous pouvez modifier cela, puis afficher des liens symboliques, etc. (certains scripts sont contenus dans /usr/libetc et liés symboliquement à /usr/bin/tc). Beaucoup d'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 les erreurs find: ‘/.../FILE’: Permission denied etc, vous pouvez exécuter le script en tant que root (à l'aide de Sudo bash -c "COMMAND", ouvrir un shell avec Sudo su etc.) et/ou simplement ajouter 2>/dev/null à la commande de recherche.

3
Wilf

-name '*.py' depuis -name accepte un motif.

Attention aux guillemets simples.

3
waltinator

Sudo find / -name "*.py"

Vous avez uniquement besoin de Sudo pour éviter Permission denieds (puisque vous effectuez une recherche à partir de la racine).

3
Jedi