¿Alguna vez se encontró buscando frenéticamente un archivo importante, solo para darse cuenta de que desperdició muchas horas tratando de buscar en todos los directorios pero el archivo no se encuentra en ninguna parte? Bueno, este es un problema común que enfrentan la mayoría de los usuarios de Linux, especialmente los nuevos usuarios con una gran cantidad de archivos y directorios desorganizados. En este artículo, explicamos cómo puede buscar archivos y directorios de diferentes maneras utilizando el comando de búsqueda en Linux.
¿Qué es el comando de búsqueda en Linux?
El comando de búsqueda es una de las herramientas más importantes que ayudan a los usuarios de Linux a buscar sus archivos y carpetas con una variedad de opciones. Incluso puede ejecutar comandos de shell en los elementos de búsqueda devueltos (¡más sobre esto más adelante!). La sintaxis para buscar archivos y directorios usando el comando de búsqueda es:
find <options> <location> <expression>
Así es como explicaremos la sintaxis anterior:
<options>
son las diversas opciones utilizadas para refinar la búsqueda<location>
especifica la ubicación en la memoria para que busque el comando de búsqueda<expression>
especifica el elemento de búsqueda a buscar
Algunas de las opciones comunes para emparejar con el comando de búsqueda son:
Opciones | Descripción |
---|---|
-name |
Esta opción se utiliza para especificar el nombre del archivo o carpeta. |
-type |
Esto especifica el tipo de elementos a buscar. |
-exec |
El indicador exec se usa para ejecutar comandos de shell en la salida. |
-size |
Esta bandera filtra los elementos según su tamaño de ocupación de memoria. |
-perm |
Esta bandera filtra archivos y directorios según sus permisos. |
-user |
Este indicador se utiliza para buscar archivos y directorios que pertenecen a un usuario específico. |
Las mejores maneras de usar el comando de búsqueda en Linux
La forma más común de buscar archivos y directorios con el comando find en Linux es con su respectivo nombre. Si no sabe el nombre exacto del archivo, el comando de búsqueda, que es muy versátil, puede usarse para buscar archivos incluso con la parte de un nombre.
1. Encuentra archivos específicos con nombre coincidente
Para buscar archivos y directorios con el comando de búsqueda, use el indicador -iname. La ventaja de buscar con este indicador es que buscará el nombre de pila ignorando las mayúsculas y minúsculas del nombre del archivo. La sintaxis para usar el comando de búsqueda con el indicador -iname es:
find <location> -iname <search_name>
Por ejemplo, si desea buscar el archivo “test.txt” en el directorio actual, use este comando:
find . -iname "test.txt"
Aquí el ‘.’ representa el directorio actual en términos del modo de direccionamiento relativo para la ubicación del archivo. Incluso puede usar el modo de direccionamiento absoluto para la ubicación del archivo si encuentra que el modo relativo es difícil de entender.
El indicador “-iname” ignorará las mayúsculas y minúsculas de los nombres de los archivos. Para buscar nombres de archivo que coincidan exactamente con el nombre del archivo, simplemente reemplace el indicador -iname con el indicador -name:
find <location> -name <name_to_search>
2. Encuentra archivos por patrón de nombre en Linux
A veces necesita trabajar con un archivo importante pero no puede recordar el nombre completo del archivo. Incluso en esta situación, el comando de búsqueda puede ser su salvador. Simplemente use comodines para que coincida con el patrón de su nombre de archivo. Los comodines intentarán hacer coincidir el patrón dado con todos los nombres disponibles. Supongamos que necesita buscar un archivo “test-101.py” en el directorio actual, puede usar el siguiente comando:
Esto mostrará una lista de los diferentes archivos que comienzan con el nombre ‘prueba’ en sus nombres de archivo, como se muestra a continuación:
find . -type f -iname "test*"
Aquí, se agrega el tipo f para especificar el tipo de elemento de búsqueda como archivos. Además, asegúrese de usar la expresión comodín entre comillas dobles para evitar errores.
3. Encuentre archivos o directorios con nombres coincidentes
Generalmente, el comando de búsqueda busca todos los archivos y directorios que coincidan con el nombre. Para buscar solo archivos, use la opción “-type f” con la sintaxis básica:
find <location> -type f -name <name_to_search>
Por ejemplo, el siguiente comando mostrará todos los archivos con el nombre “prueba”:
find . -type f -iname "test*"
Para buscar solo directorios, use el indicador “-type d” como:
find <location> -type d -iname <name_to_search>
Por ejemplo, el siguiente comando mostrará todos los directorios con el nombre “prueba”:
find . -type d -iname "test*"
4. Encuentra archivos con extensión específica
Con la combinación mortal de comodines y el comando de búsqueda, incluso puede buscar archivos según sus extensiones. Por ejemplo, si necesita buscar un archivo de configuración en el directorio actual, pero no sabe el nombre exacto, puede usar el comando:
find . -iname "*.conf"
5. Encuentra archivos y directorios según el tamaño
Cuando se combina con los descriptores de tamaño apropiados, puede usar el comando de búsqueda con el indicador -size para buscar archivos y directorios en Linux según su tamaño ocupado en la memoria. Además, también se pueden agregar varios descriptores de tamaño para especificar el límite de tamaño de archivo para buscar.
La sintaxis básica para encontrar archivos en Linux según el tamaño es:
find <location> -type <search_item_type> -size <symbol><file_size><size_descriptor>
La sintaxis anterior es la misma que las anteriores, excepto por el “-size <symbol><file_size><size_descriptor>
” parte. Aquí hay una explicación para esta parte:
- Para la parte
puede especificar ‘+’ o ‘-‘ o incluso dejarlo en blanco. Aquí, ‘+’ significa buscar archivos/directorios que excedan el tamaño dado, y ‘-‘ especifica buscar archivos/directorios por debajo del tamaño dado. Si se deja en blanco, el comando de búsqueda buscará los archivos que coincidan exactamente con el tamaño. especifica el tamaño del archivo/directorio. <size_descriptor>
se refiere al rango de tamaño de archivo que desea buscar.
Varios tipos de descriptores de tamaño que puede usar son:
Descriptor de tamaño | Descripción |
---|---|
c |
Especifica el comando de búsqueda para buscar el tamaño en bytes |
k |
Especifica el comando de búsqueda para buscar el tamaño en kilobytes |
M |
Especifica el comando de búsqueda para buscar el tamaño en megabytes |
G |
Especifica el comando de búsqueda para buscar el tamaño en gigabytes |
La sintaxis anterior puede parecer muy complicada para algunos usuarios, pero algunos ejemplos harán que sea más fácil de entender.
- Si necesita ver directorios iguales a 4 kB en el directorio Documentos, use este comando:
find ~/Documents -type d -size 4k
- O si tiene poco espacio y necesita ver archivos que superan los 100 MB en el directorio Documentos, use este comando:
find ~/Documents -type f -size +100M
- Si necesita ver archivos de menos de 10 MB en el directorio Documentos, use este comando:
find ~/Documents -type f -size -10M
- Si necesita ver archivos vacíos en el directorio Documentos, use este comando:
find ~/Documents -type f -size 0
6. Buscar archivos y directorios que coincidan con un permiso específico
Los permisos en Linux son de suma importancia en Linux para proteger tanto los archivos como los directorios del acceso no intencional. Para saber más, consulte nuestra guía completa sobre permisos de Linux.
Para buscar archivos y directorios según el conjunto de permisos, use esta sintaxis:
find <location> -type <search_item_type> -perm <permission_set>
En la sintaxis anterior, puede usar el modo absoluto de direccionamiento o el modo relativo para <permission_set>
.
Suponga que necesita encontrar archivos con permiso de solo lectura para root, use este comando:
find ~/Documents/test/ -type f -perm 400
O si desea encontrar archivos con permisos de lectura y escritura para todos los usuarios, use este comando:
find ~/Documents/test/ -type f -perm a=r+w
7. Encuentra archivos y directorios propiedad de un usuario
Como explicamos anteriormente, puede buscar archivos según los permisos establecidos para el archivo con el comando de búsqueda en Linux. Ahora le mostraremos cómo ver los archivos que pertenecen a un usuario en particular. La sintaxis básica sigue siendo prácticamente la misma, excepto por el nuevo indicador de usuario que especifica el comando de búsqueda para buscar archivos propiedad de ese usuario:
find <location> -type <search_item_type> -user <username>
Por ejemplo, si desea ver los archivos propiedad del usuario ‘prueba’ en el directorio actual, use este comando:
find . -type f -user test
8. Usar el comando de búsqueda con el indicador -exec
Con el indicador -exec, puede ejecutar comandos de shell reales con el comando de búsqueda y, por lo tanto, aumentar sus funcionalidades varias veces. El indicador -exec ejecuta los comandos de shell en cada resultado de búsqueda devuelto. La sintaxis básica para usar el comando de búsqueda con el indicador -exec es:
find <location> <options> -exec <shell_command> {} ;
En la sintaxis anterior, los {} se utilizan para inyectar los resultados de búsqueda encontrados por el comando de búsqueda dentro del comando de shell. Un ejemplo lo hará más claro.
Suponga que desea copiar un archivo llamado test.txt dentro del directorio actual a /tmp/docs/, use este comando:
find . -iname renaming.sh -exec cp {} ./testing \;
En el ejemplo anterior, cuando el “renaming.sh
se encuentra el archivo “, se conecta directamente en lugar del”{}
” donde se sigue el procedimiento de copia normal. El último punto y coma (;) marca la terminación del comando.
Veamos ahora cómo el indicador -exec maneja varios archivos. Supongamos que desea mover todos los archivos .pdf en el directorio actual a un nuevo directorio llamado “ftesting” en el directorio de inicio, puede usar este comando:
find .-name "*.pdf" -exec mv {} ./testing + \;
Si desea cambiar el nombre con el comando mv, consulte nuestro artículo sobre cómo cambiar el nombre de un archivo en Linux, donde hemos discutido cuatro métodos diferentes para cambiar el nombre de los archivos.
9. Buscar y eliminar archivos y directorios en Linux
A veces, es posible que deba eliminar archivos/directorios específicos en Linux. Uno pensaría que se necesita escribir un script de shell complicado para ello. Sin embargo, con el poder del comando -exec, puede eliminar fácilmente archivos o directorios filtrados por los comandos de búsqueda según las reglas especificadas. La sintaxis básica para eliminar archivos usando el comando de búsqueda es:
find <location> <options> -type <search_item_type> -exec rm -vf {} ;
Algunos usuarios pueden encontrar el comando anterior difícil de entender. Para simplificar las cosas, puede usar el indicador -delete en lugar de la parte completa -exec para eliminar los elementos. La sintaxis para eliminar archivos usando el indicador -delete con el comando de búsqueda en Linux es:
find <location> <options> -type <search_item_type> -delete
Eliminar archivo y directorio con nombre exacto
Eliminar un archivo/directorio funciona igual que usar el comando de búsqueda para buscarlo. La sintaxis para eliminar un archivo usando find es:
find <location> <options> -type <search_item_type> -name <file_to_delete> -delete
Digamos que desea eliminar el archivo “test.txt” en el directorio actual, puede usar este comando como:
find . -type f -name test.txt -delete
Eliminar archivos con nombre parcialmente coincidente
Si elimina un archivo y todo lo que puede recordar es una parte del nombre, entonces puede usar comodines para encontrar todo tipo de nombres que coincidan con el nombre del archivo dado. La sintaxis para eliminar archivos y directorios con un nombre parcial con el comando de búsqueda en Linux es:
find <location> <options> -type <search_item_type> -name <name_with_wildcard> -delete
Por ejemplo, para eliminar todos los archivos que comienzan con el nombre “prueba”, use este comando:
find . -type f -name "test*" -delete
Eliminar archivos con la misma extensión
Cuando necesite eliminar todos los archivos con la misma extensión en un directorio, todo lo que necesita hacer es agregar el indicador -delete al final. La sintaxis para eliminar todos los archivos con las mismas extensiones es:
find <location> -type f -name "*.<extension>" -delete
Por ejemplo, si desea eliminar todos los archivos .pdf en el directorio actual, puede usar este comando:
find . -type f -name "*.pdf" -delete
Si desea conocer más formas de eliminar archivos y directorios en Linux, consulte los artículos sobre cómo eliminar un archivo en Linux y cómo eliminar un directorio en Linux. Le recomendamos que siempre ejecute primero el comando de búsqueda sin el indicador de eliminación. Una vez que esté satisfecho con los resultados, puede aplicar el indicador -delete para eliminar finalmente los elementos.
Eliminar archivos y directorios vacíos con el comando de búsqueda
Eliminar archivos y directorios vacíos es bastante simple. Simplemente agregue el indicador -delete al final para que el comando encuentre carpetas y archivos vacíos en Linux. La sintaxis para eliminar archivos y carpetas vacíos es:
find <location> -type <search_item_type> -size 0 -delete