(5 respuestas)
Cerrado hace 4 años.
¿Cómo puedo buscar en todo mi sistema de archivos de Linux todos los archivos de python (archivos con extensión .py )? Sé que puedo hacer find -name filename pero ¿cómo puedo hacerlo para el tipo de archivo?
Respuesta aceptada:
No todos los archivos de python tendrán la extensión de archivo .py – Intente ejecutar grep -rni python /usr/bin por ejemplo). La mayoría de estos scripts tendrán una línea 'shebang' (o hashbang) (por ejemplo, #!/usr/bin/env python , #!/usr/bin/python2.7 ). Esto le informa al intérprete de la secuencia de comandos qué programa debe usarse para ejecutarlo, y puede buscar esto para encontrar archivos de python
Sin embargo, también puede usar el tipo MIME del archivo (generalmente a lo largo de las líneas de text/x-python ) para encontrarlo:
find / -type f | while read in ; do if file -i "${in}" | grep -q x-python ; then echo "${in}" ; fi ; done
donde / es su directorio de búsqueda previsto.
Con find también puede agregar el -executable Opción para buscar solo archivos ejecutables. También el uso de -type f restrinja buscar para buscar solo archivos:puede cambiar esto y luego mostrar enlaces simbólicos, etc. también (algunos scripts están contenidos en /usr/lib etc. y vinculado a /usr/bin/ etc.) . Hay muchas más opciones disponibles, puede verlas ejecutando man find .
file debería poder adivinar el tipo de archivo incluso si el archivo no tiene extensión, etc. (usando la línea shebang, etc.); consulte aquí.
Para eliminar cualquier find: ‘/.../FILE’: Permission denied etc., puede ejecutar el script como root (usando sudo bash -c "COMMAND" , abriendo un shell con sudo su etc), y/o simplemente agregar 2>/dev/null al comando de búsqueda.