martes, 1 de septiembre de 2009

Buscando archivos usando find

Una de las cosas que mas gusta de Linux es la linea de comandos o terminal. Hay muchos exploradores de archivos Linux como Nautilus, Konqueror, Koammander, etc, pero hay momentos en los que simplemente quieres buscar un archivo usando la linea de comandos sin la necesidad de abrir una aplicación GUI.

Eso es un extracto de la página man del comando find:
GNU find busca el directorio raiz en cada nombre de archivo proporcionado evaluando la expresión dada de izquierda a derecha, acorde con las reglas de precedencia hasta que el resultado es alcanzado a tal punto se mueve al siguiente nombre de archivo.

Buscar directorios vacíos:
find /ruta -depth -type d -empty

Buscar archivos vacíos:
find /ruta -depth -type f -empty

Buscar un archivo con nombre específico:
find /ruta -name nombre_de_archivo

Buscar un archivo con una extensión específica:
find /ruta -name "*.extensión"

Buscar archivos con un permiso específico con extensión txt:
find /ruta -name '*.txt' -perm 644

Buscar archivos con ciertos permisos:
find /ruta -perm -"permisos"

Buscar archivo con cierto y nombre pero de cualquier extensión:
find /ruta -name 'nombre_archivo.*'

Buscar archivos modificados en las ultimas 24 horas:
find /ruta -mtime n

Donde n es:

  • 0 para las ultimas 24 horas
  • 1 para las ultimas 48 horas
  • 2 para las ultimas 72 horas

Buscar archivos que fueron accesados las ultimas 24 horas:
find -atime n

Donde n es:

  • 0 para las ultimas 24 horas
  • 1 para las ultimas 48 horas
  • 2 para las ultimas 72 horas

Buscar archivos según el dueño:
find /ruta -user root

También puedes unir (pipe) el comando find con el comando xargs para ejecutar comandos en los archivos.

Buscar y borrar archivos:
find /ruta -name "archivo" | xargs rm

Revisa la página man de xargs para mayor información sobre este poderoso comando.

Muchos de los usuarios nuevos de Linux se intimidan por el uso de la linea de comando pero eso no debería ser así ya que la linea de comando puede ser mas rápida y mas poderosa que una aplicación GUI.

2 comentarios:

Anónimo dijo...

el mismo comando find en la sección acciones tiene la opcion de borrar archivos (-exec rm) no hace falta anidar otro comando.
Les dejo una un poco más complicada, que find encuentre archivos sin extensión.
Vaya problemita no...

neuxb dijo...

Para encontrar los archivos sin extension:
find / \( ! -name "*.*" \) -type f
Un saludo