Este find
command es uno de los comandos de Linux más útiles, especialmente cuando se trata de cientos o miles de archivos y carpetas en computadoras modernas. Como el nombre sugiere, find
Le ayuda a encontrar contenido, no solo por nombre de archivo.
Ya sea que esté usando su propia computadora o tratando de ayudar a alguien en un sistema desconocido, aquí hay 10 formas find
puede ayudarlo a encontrar datos importantes.
[ Keep your most commonly used commands handy with the Linux commands cheat sheet. ]
Tabla de Contenidos
1. Encuentra un solo archivo por nombre
Cuando sepa el nombre del archivo pero no recuerde dónde guardarlo, use find
Busque en su directorio de inicio.usar 2>/dev/null
Elimine los errores de permisos (o utilice sudo
obtener todos los permisos).
$ find / -name "Foo.txt" 2>/dev/null
/home/seth/Documents/Foo.txt
2. Encuentra un solo archivo por nombre aproximado
Si no recuerda el nombre exacto del archivo, o no está seguro de si debe escribir en mayúscula algún carácter, puede realizar una búsqueda parcial y sin distinción entre mayúsculas y minúsculas como esta:
$ find / -iname "*foo*txt" 2>/dev/null
/home/seth/Documents/Foo.txt
/home/seth/Documents/foo.txt
/home/seth/Documents/foobar.txt
3. Encuentra todo
Este ls -R
El comando enumera el contenido de un directorio de forma recursiva, lo que significa que no solo enumera el destino que le das, sino que también desciende a cada subdirectorio dentro de ese destino (y cada subdirectorio dentro de cada subdirectorio, etc.) find
El comando también tiene esta función, a través de -ls
Opciones:
$ find ~/Documents -ls
3554235 0 drwxr-xr-x [...] 05:36 /home/seth/Documents/
3554224 0 -rw-rw-r-- [...] 05:36 /home/seth/Documents/Foo
3766411 0 -rw-rw-r-- [...] 05:36 /home/seth/Documents/Foo/foo.txt
3766416 0 -rw-rw-r-- [...] 05:36 /home/seth/Documents/Foo/foobar.txt
Tenga en cuenta que no uso 2>/dev/null
En este caso, dado que solo enumeré ruta de archivo en mi directorio de inicio, por lo que no espero errores de permiso.
4. Buscar por contenido
Una find
El comando no tiene que realizar solo una tarea.De hecho, una de las opciones find
Le permite ejecutar diferentes comandos en cualquier resultado find
devolver.Esto puede ser especialmente útil cuando necesita buscar archivos por contenido en lugar de por nombre, o debe buscar en ambos.
$ find ~/Documents/ -name "*txt" -exec grep -Hi penguin {} \;
/home/seth/Documents/Foo.txt:I like penguins.
/home/seth/Documents/foo.txt:Penguins are fun.
[ Learn how to manage your Linux environment for success. ]
5. Encuentra archivos por tipo
puedes usarlo -type
opciones
$ find ~ -type f
/home/seth/.bash_logout
/home/seth/.bash_profile
/home/seth/.bashrc
/home/seth/.emacs
/home/seth/.local/share/keyrings/login.keyring
/home/seth/.local/share/keyrings/user.keystore
/home/seth/.local/share/gnome-shell/gnome-overrides-migrated
[...]
Siempre que esté utilizando la versión GNU find
puede incluir varios tipos de archivos en sus resultados de búsqueda:
$ find ~ -type f,l -name "notebook*"
/home/seth/notebook.org
/home/seth/Documents/notebook-alias.org
6. Listar solo directorios
una desventaja de ls
Ordenar es que no puede filtrar sus resultados por tipo de archivo, por lo que puede ser ruidoso si solo desea una lista de directorios en la ruta.Este find
comando con -type d
opción es una mejor opción:
$ find ~/Public -type d
find ~/Public/ -type d
/home/seth/Public/
/home/seth/Public/example.com
/home/seth/Public/example.com/www
/home/seth/Public/example.com/www/img
/home/seth/Public/example.com/www/font
/home/seth/Public/example.com/www/style
7. Limite los resultados de las listas
Hay cientos de archivos en el directorio de usuario predeterminado y miles más y, a veces, obtiene más resultados de él. find
de lo que quierespuedes usarlo -maxdepth
opción seguida del número de directorios que desea find
Después de descender al punto de partida:
$ find ~/Public/ -maxdepth 1 -type d
/home/seth/Public/
/home/seth/Public/example.com
8. Encuentra archivos vacíos
A veces es útil encontrar archivos vacíos como una forma de organizar:
$ find ~ -type f -empty
random.idea.txt
Técnicamente, puedes usar find
Los archivos vacíos se eliminan, pero la eliminación de archivos mediante programación es peligrosa.Por ejemplo, si olvida incluir -type f
buscando vacío documento, obtendrá el directorio en el resultado. Al agregar banderas de eliminación, está eliminando una estructura de directorio posiblemente importante.
inventa tu find
comando y luego verifique los resultados antes de eliminar.Además, en find
Los resultados se pueden eliminar antes de calificarlos (en otras palabras, puede eliminar directorios en comandos diseñados para eliminar solo archivos colocando el indicador de eliminación antes del indicador de tipo).
prefiero usar xargs
o comandos paralelos y basura en el raro caso de que elimine archivos find
.
9. Encuentra archivos por edad
Este -mtime
La opción le permite limitar la búsqueda a archivos más antiguos, pero también incluye archivos más nuevos, algún valor 24 veces
$ find /var/log -iname "*~" -o -iname "*log*" -mtime +30
Este +
Antes -mtime
Un número no significa sumar ese número a la hora.Esta es una declaración condicional que coincide (en este ejemplo) con un valor mejor que 24 veces 30. Es decir, el código de ejemplo busca archivos de registro que no se hayan modificado en un mes o más.
Para buscar archivos de registro modificados durante la última semana, puede utilizar -
Condicional:
$ find /var/log -iname "*~" -o -iname "*log*" -mtime -7
/var/log/tallylog
/var/log/cups/error_log
/var/log/cups/access_log
/var/log/cups/page_log
/var/log/anaconda/anaconda.log
/var/log/anaconda/syslog
/var/log/anaconda/X.log
[...]
usted ya sabe -ls
flag, por lo que puede combinarlo con estos comandos para mayor claridad:
$ find /var/log -iname "*~" -o -iname "*log*" -mtime -7 -ls
-rw------- 1 root root 0 Jun 9 18:20 /var/log/tallylog
-rw------- 1 root lp 332 Aug 11 15:05 /var/log/cups/error_log
-rw------- 1 root lp 332 Aug 11 15:05 /var/log/cups/access_log
-rw------- 1 root lp 332 Aug 11 15:05 /var/log/cups/page_log
-rw------- 1 root root 53733 Jun 9 18:24 /var/log/anaconda/anaconda.log
-rw------- 1 root root 835513 Jun 9 18:24 /var/log/anaconda/syslog
-rw------- 1 root root 21131 Jun 9 18:24 /var/log/anaconda/X.log
[...]
10. Rutas de búsqueda
A veces conoce la estructura de directorios que apunta a los archivos que desea, simplemente no sabe dónde se encuentra la estructura de directorios en el sistema.Para buscar dentro de una cadena de ruta, puede usar -ipath
opción, que trata los puntos y las barras no como caracteres de expresión regular, sino como puntos y barras.
$ find / -type d -name 'img' -ipath "*public_html/example.com*" 2>/dev/null
/home/tux/Public/public_html/example.com/font
Lo encontré
Este find
Los comandos son una herramienta esencial para los administradores de sistemas. Es útil para investigar o aprender sobre nuevos sistemas, encontrar datos fuera de lugar y resolver problemas cotidianos. Pero también es solo una herramienta de conveniencia.
[ Download the Linux find cheat sheet to keep all these shortcuts in one place. ]
No necesita una «buena» razón para usar find
. usar find
Hace que sea más fácil buscar contenido en lugar de atravesar su sistema. Es una herramienta discreta pero infinitamente útil que representa la alegría sublime del Linux cotidiano.Empieza a usarlo hoy y luego Buscar lo que lo hace genial.