En su forma básica, encontrar es fácil. Al mismo tiempo, puede resultar complejo con la cantidad de opciones, pruebas y acciones disponibles.
El comando de búsqueda es una herramienta increíblemente poderosa y esforzarse en aprenderlo puede ser gratificante. Le ayudará a realizar varias tareas de administración del sistema de manera eficiente, como la administración del espacio en disco, operaciones de archivos recursivas y copias de seguridad.
El comando find de Linux busca archivos y carpetas según los criterios que defina y le permite realizar una acción en los resultados de la búsqueda. La sintaxis de encontrar es así:
$ find directory-to-search criteria action
donde
- directorio a la búsqueda es el punto de partida desde donde buscar comienza a buscar archivos. La búsqueda incluye todos los subdirectorios de este directorio.
- Criterios (prueba) indica qué archivos buscar
- La acción indica qué hacer con cada archivo encontrado que coincida con los criterios.
Tests
Buscar por nombre
He aquí un ejemplo sencillo. El siguiente comando busca el archivo a.txt en el directorio actual:
$ find . -name "a.txt"
./a.txt
Dónde
- . se refiere al directorio actual
- -name test especifica los criterios que deben coincidir
Esta búsqueda con -name test distingue entre mayúsculas y minúsculas e ignoraría el archivo A.txt. Para asegurarse de que su búsqueda no distingue entre mayúsculas y minúsculas -iname
prueba:
$ find . -iname "a.txt"
./a.txt
./A.txt
Para buscar todo .jpg
archivos de imagen en el directorio actual, use el patrón comodín *.jpg
:
$ find . -name "*.jpg"
./genxfacebook2.jpg
./genxfacebook1.jpg
./Moodle2.jpg
./moodle.jpg
./moodle/moodle1.jpg
./genxfacebook.jpg
Puede utilizar el nombre del directorio en el que buscar. Por ejemplo, para buscar todas las imágenes .jpg en el directorio / home:
$ find /home -name "*.jpg"
find: `/home/ubuntu/.ssh': Permission denied
/home/vagrant/Moodle2.jpg
/home/vagrant/moodle.jpg
/home/me/hello.jpg
find: `/home/me/testfiles': Permission denied
find: `/home/me/data': Permission denied
/home/me/water.jpg
find: `/home/me/.cache': Permission denied
Si ve demasiados errores de permisos denegados, puede agregar 2> / dev / null al final del comando. Esto redirige los mensajes de error al dispositivo / dev / null y proporciona una salida más limpia:
find /home -name "*.jpg" 2>/dev/null
/home/vagrant/Moodle2.jpg
/home/vagrant/moodle.jpg
/home/me/hello.jpg
/home/me/water.jpg
Buscar por tipo de archivo
Usando el -type
prueba puede buscar archivos por tipo. Los tipos de archivos pueden ser:
f plain files
d directories
l symbolic links
b block devices
c character devices
p named pipes
s sockets
Por ejemplo, el uso de test -type d mostrará solo los directorios:
$ find . -type d
.
./.ssh
./.cache
./moodle
Buscar por tamaño de archivo
Es posible que deba buscar archivos grandes y eliminarlos. En el siguiente ejemplo, la prueba -size va seguida de la cadena + 1G. Esto buscaría todos los archivos de más de 1 GB.
$ find . -size +1G
./Microsoft_Office_16.29.19090802_Installer.pkg
./android-studio-ide-183.5692245-mac.dmg
El signo + significa archivos de búsqueda más grandes que el siguiente número. Se puede usar un símbolo menos (-) para indicar menor que. No usar ningún signo significaría coincidir exactamente con el tamaño.
El número va seguido de la unidad de tamaño del archivo. Las unidades pueden ser:
Caracter | Unidad de tamaño fino |
b | 521 bloques de adiós |
c | Bytes |
k | Kilobytes |
M | Megabytes |
G | gigabytes |
Buscar directorios y archivos vacíos
Utilice la herramienta -empty
prueba para encontrar directorios y archivos vacíos como este:
$ find . -empty
./.cloud-locale-test.skip
./datafiles
./b.txt
...
./.cache/motd.legal-displayed
Buscar por hora de modificación del archivo
Puede buscar todos los archivos y directorios según el tiempo de creación o modificación con -cmin
prueba. Para buscar todos los archivos modificados en los últimos 60 minutos (menos de 60) utilice -60
Me gusta esto:
$ find . -cmin -60
.
./a.txt
./datafiles
Para archivos modificados en cualquier momento antes de los últimos 60 minutos, use +60
.
Buscar por tiempo de acceso
Puede buscar archivos por última hora de acceso, con -atime
prueba. Por ejemplo, el siguiente comando busca archivos a los que no se haya accedido en los últimos 180 días:
$ find . -atime +180
Estos se pueden mover a un dispositivo de respaldo si el espacio en disco se está agotando.
Búsqueda por nombre de usuario
Con -usuario nombre de usuario prueba puede buscar todos los archivos y directorios que pertenecen a un usuario. Por ejemplo, el siguiente comando busca todos los archivos y directorios propiedad del usuario ubuntu en el directorio / home:
$ find /home -user ubuntu 2>/dev/null
/home/ubuntu
/home/ubuntu/.bash_logout
/home/ubuntu/.bashrc
/home/ubuntu/.ssh
/home/ubuntu/.profile
Buscar por modo
¿Desea buscar archivos configurados en un modo específico, es decir, tiene un conjunto específico de permisos? Utilice la prueba -perma. El siguiente ejemplo busca archivos con permisos establecidos en 777:
$ find /home -perm 777
Operators
Puede utilizar los siguientes tres operadores lógicos para combinar varias pruebas en un solo comando de búsqueda:
- -y
- -O
- -no
Por ejemplo, el siguiente comando busca archivos de más de 100 MB propiedad del usuario:
$ find /home -user me -and -size +100M 2>/dev/null
/home/me/kali-linux-2020.3-installer-netinst-i386.iso
El siguiente comando busca archivos de más de 100 MB propiedad del usuario yo o del usuario vagabundo:
$ find /home \( -user vagrant -or -user me \) -and -size +100M 2>/dev/null
/home/vagrant/LibreOffice_7.0.1_Linux_x86-64_deb.tar.gz
/home/me/kali-linux-2020.3-installer-netinst-i386.iso
Debe colocar un carácter de barra invertida delante de los paréntesis para evitar que el shell intente interpretarlos.
Actions
find le brinda los resultados de la búsqueda y luego la opción de realizar una acción en ellos. A continuación, se muestran algunas acciones predefinidas:
Acción | Descripción |
-borrar | Elimina archivos que coinciden con los criterios de búsqueda |
-ls | Muestra una salida ls detallada con tamaños de archivo y recuento de inodos |
-impresión | Muestra el nombre de ruta completo de los archivos coincidentes. Es la acción predeterminada si no se especifica ninguna otra acción |
Exec- | Ejecuta el comando que sigue, en cada línea de la salida de búsqueda |
Entonces, si desea buscar todos los archivos vacíos y eliminarlos, así es como puede hacerlo:
$ find . -empty -delete
Precaución: antes de utilizar la acción de eliminación, siempre es seguro ejecutar el comando una vez con -print
acción y confirmar los resultados.
EL -exec
la acción es especial. Le permite ejecutar un comando de su elección en los resultados de búsqueda. Es como esto:
-exec <em>command</em> {} \;
Aquí
- comando es el comando que desea ejecutar en los resultados de la búsqueda, como rm, mv o cp.
- {} representa los resultados de la búsqueda.
- El comando termina con un punto y coma escapado con una barra invertida.
Entonces, el comando para buscar y eliminar todos los archivos vacíos se puede escribir así:
$ find . -empty -exec rm {} \;
Aquí hay otro ejemplo usando -exec
acción. El siguiente comando copia todo .png
archivos de imagen al directorio de copia de seguridad / imágenes:
$ find . -name "*.png" -exec cp {} /backups/images \;
Conclusión
Puede utilizar el Comando de búsqueda de Linux para buscar archivos según el nombre, la fecha del último acceso, la fecha de la última modificación, el nombre del usuario (propietario), el nombre del grupo, el tamaño, los permisos y varios otros criterios. Con estos resultados de búsqueda, puede realizar acciones en ellos, como eliminarlos, copiarlos o moverlos a una ubicación diferente.
Una vez que domine el comando de búsqueda, puede ser de gran ayuda y puede simplificar administracion del sistema tareas para ti. ¡Y la clave para dominarlo es practicarlo y usarlo!