El comando FIND para Linux lo conocí hace ya algo de tiempo y tomando en cuenta que es muy básico y cualquier novato en Linux debería conocerlo, no me veía en la necesidad de usarlo mucho.
La necesidad de explotar el comando FIND nace cuando me di cuenta que de un listado grande de archivos tenía que seleccionar por medio de condiciones en sus propiedades, cuales quería procesar o eliminar, también se puede hacer lo mismo con los directorios.
Puedes revisar la documentación con el comando man find.
Pero enseguida te dejo algunos ejemplo que me han sido más útiles a la hora de hacer búsquedas en listas grandes de archivos.
Sintaxis: find {ruta} {parametros-a-buscar} {que-hacer-con-el-resultado}
El comando find es amplio y se puede volver algo complejo dependiendo la búsqueda que se requiera.
- Buscar un archivo especifico en una ruta: find /home/junglacode/ -name nombre_archivo.extensión
- Buscar archivos que empiezan con una palabra: find /home/junglacode/ -name nombre_archivo*
- Buscar archivos de una extensión: find /home/junglacode/ -name *.extensión
- Buscar archivos mayores a un tamaño: find /home/junglacode/ -size +20M
- Buscar archivos menores a un tamaño: find /home/junglacode/ -size -1M
- Buscar archivos con menos de tres días de modificación: find /home/junglacode/ -mtime -3
- Buscar archivos con más de tres días de modificación: find /home/junglacode/ -mtime +3
- Buscar archivos con permisos 777: find /home/junglacode/ -perm 777
- Buscar archivos de un usuario: find /home/junglacode/ –user ranhma
- Buscar archivos que no pertenecen a un usuario: find /home/junglacode/ ! -user root
- Buscar archivos distintos a un nombre: find /home/junglacode/ -not -name nombre.txt
- Buscar directorios vacios: find /home/junglacode/ –type d -empty
El comando find tambien se puede combinar con otros comandos para obtener un mejor resultado:
find -name “*.extensión” | ls -l
También se pueden tomar acciones con el listado que resulte de la busqueda:
Cambiar permisos al resultado: find /home/junglacode/ -name “*.php” -type f -exec chmod 777 {} ;
Copiar los archivos del resultado a otra ubicación: find /home/junglacode/ -iname nombre.txt -exec cp {} /home/junglacode/Respaldo/ ;
Mover los archivos del resultado a otra ubicación: find /home/junglacode/ -iname nombre.txt -exec mv {} /home/junglacode/Respaldo/ ;
Eliminar los archivos del resultado a otra ubicación: find /home/junglacode/ -type f -name “nombre.txt” -exec rm -rf {} ;
En fin, como dije, el comando find puede usarse desde una manera básica e irse haciendo la búsqueda más compleja, además si le sumamos acciones con el resultado pues se puede usar para automatizar con tareas programadas en un script con cron y dejar que las tareas programadas hagan el trabajo más rápido y óptimo.
Lobo Telemático, orgullosamente santacrucense.