find
Para buscar archivos.
Sintaxis:
$ find NOMBRE_DIRECTORIO [EXPRESIONES]
Expresiones:
- -name : exp -> Busca por nombre
- -iname : exp -> Busca por nombre sin distinguir mayúsculas.
- -user : exp -> Por usuario.
- -type : tipo
- f : Fichero
- d : Directorio.
- l : Enlace
- -size : n -> Busca por tamaños
- n = Kas
- +n = Megas
- -n = Gigas
Buscar por fechas de días. n= numero, con + o - indicamos
- -atime n : Fecha Acceso.
- -ctime n : Fecha de cambio.
- -mtime n : Fecha modificación.
Buscar por minutos ...
- -amin n : Fecha Acceso.
- -cmin n : Fecha de cambio.
- -mmin n : Fecha modificación.
Buscar por usuarios:
- -user NOMBRE_USUSRIO : Filtra por usuario.
- -group NOMBRE_GRUPO : Filtra por grupo.
Útiles :
- -maxdepth n : Limita profundidad. Para limitar la búsqueda recursiva a "n" niveles.
- -inum INODO : Busca por inodo.
- -exec COMANDO {} \; : Permite ejecutar un comando.
Buscar los archivos terminados en .php
$ find . -type f -name *php
Encontrar los archivos que NO terminen en .php
$ find . -type f ! -name *php
otra opción es ...
$ find . -type f -not -name *php
Búsquedas múltiples, por ejemplo los que contengan los caracteres "ja" y no terminen en .php
$ find . -type f -name "ja*" ! -name *php
Aplicando operadores lógicos como OR ...
$ find . -name '*.php' -o -name '*.yml' -o -name '*.xml'
Buscar en varias rutas ala vez ...
$ find dir1/ dir2/ -name *php
Buscar archivos ocultos.
$ find . -name ".*"
Buscar archivos con condiciones de permisos. Por ejemplo los que contengan el permiso 777.
$ find . -type f -perm 0777
Archivos pertenecientes a un usuario en concreto.
$ find . -user NOMBRE_USUARIO
Por usuario y algún criterio adicional.
$ find . -user NOMBRE_USUARIO -type f -name *php
Por un grupo propietario en concreto.
$ find /var/ftp -group admin -type d
Los que fueron modificados en la última hora.
$ find /var/log/ -min -60
Los archivos que pesen hasta 1 megas.
$ find /var/www/app -size 1M
Ejecutando un comando sobre el resultado...
$ find . -type f -name *txt -exec ls -l {} \;
Información sobre un archivo.
$ file /bin/ls
/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked,
interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=3c233e12c466a83aa9...., stripped
Por tamaño ...
Buscar ficheros de 1 K.
$ find . -size 1
./hallo
Ficheros mayores de 1 K...
$ find . -size +1
./hallo2
Por modificación ...
Archivos modificados en los últimos 30 días.
$ find . -mtime -30
.
./fichero.txt
./test
...
Ejecutando comandos sobre los resultados de la búsqueda.
$ find . -mtime +90 -exec echo "Encontrado -> " {} \;
Esto buscará todos los archivos modificados hace más de 90 días e imprime "Encontrado -> ./PATH/NOMBRE_ARCHIVO"
Si se utiliza rm
se ha de ir con cuidado como siempre con rm
.