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