Comando find
El comando find es uno de los mas prácticos, no solo sirve para buscar fichero, podemos utilizar también para realizar backup, buscar archivos en conjunto y aplicarles otros comandos.
find / -name nombre
Busca un archivo llamado "nombre" a partir del directorio raíz (buscar en todos los directorios incluidos los sistemas de archivos montados). La opción -name hace que el caso de búsqueda sensible. Puede utilizar la opción -iname para encontrar algo con independencia del caso.
find /home -user jose
Buscar todos los archivos en el directorio /home propiedad del usuario jose.
find /usr -name *stat
Buscar todos los archivos en el directorio /usr que terminan en stat.
find /var/spool -mtime +60
Buscar todos los archivos en el directorio /var/spool que se modificaron hace más de 60 días.
find /tmp -name core -type f -print | xargs /bin/rm -f
Buscar archivos con el nombre core en o por debajo del directorio /tmp y eliminarlos. Tenga en cuenta que esto funcionará correctamente si hay nombres de archivo que contiene saltos de línea, comillas simples o dobles, o espacios.
find $HOME -mtime 0
Buscar archivos en el directorio principal que se han modificado en las últimas veinticuatro horas. Este comando funciona de esta manera porque el tiempo ya que cada archivo fue modificada por última vez se divide por 24 horas y cualquier resto es descartado. Esto significa que para que coincida con-mtime 0, un archivo se tiene que tener una modificación en el pasado que es de 24 horas menos.
find . -perm 664
Buscar archivos que tienen permiso de lectura y escritura para su propietario, y el grupo, pero que otros usuarios pueden leer pero no escribir. Los archivos que cumplan estos criterios, pero tiene otros permisos establecidos, no será igualado.
find /media -user root
Buscara todos los archivos del root
find /media -size 30
Buscara todos los archivos que ocupan 30kb
find /media -size +30
Buscara todos los archivos que ocupan mas 30kb
find /media -type d
buscara todos los directorios de la ruta especificada
find /media -type f
buscara todos los archivos de la ruta especificada
find /media -type l
buscara todos los enlaces de la ruta especificada
Combinar find
- Buscara archivos con el nombre especificado y que sean directorios
find /media -iname “nombre” -and -type d
- Buscara archivos que tengan uno de los dos nombres especificados.
find /media -iname “nombre” -or -iname “nombre2”
- Busca los archivos que contengan la cadena de texto cdn (discriminando las mayúsculas y minúsculas) y acaban en 0 dentro de la carpeta de documentos del usuario y los copia dentro de la carpeta backup
/home/usuario/Documentos/ -iname "*cdn*0*" -exec cp {} /home/usuario/backup \;
Buscar y borrar
A veces necesito buscar y borrar una serie de archivos o subdirectorios desde el terminal podemos combinar el comando find y rm para realizar esta operación.
find /media/libros/copia-biblio/ -iname "*.jpg" -exec rm {} \;
Buscar y mover
find _PASADO/ -iname "*.json" -exec mv '{}' aki/ \;
Buscar y copiar según fecha
find . -type f -newermt "2024-09-24" -exec cp {} /home/nacho/aki/ \;