find
es un comando para filtrar recursivamente objetos en el sistema de archivos basado en un mecanismo condicional simple. Use find
para buscar un archivo o directorio en su sistema de archivos. Usando la bandera -exec
, los archivos se pueden encontrar y procesar inmediatamente dentro del mismo comando.,
Find Linux Files by Name or Extension
Use find
from the command line to locate a specific file by name or extension., El siguiente ejemplo busca *.err
archivos en el directorio /home/username/
y todos los subdirectorios:
find /home/username/ -name "*.err"
debería ver una salida similar en su consola:
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
comandos de búsqueda y sintaxis comunes de Linux
el comando find
generalmente toma la siguiente forma:
find options starting/path expression
- El atributo
options
controla el comportamiento y el método de optimización delfind
proceso., -
starting/path
atributo define el directorio de nivel superior dondefind
comienza el filtrado. - El atributo
expression
controla las pruebas que buscan en la jerarquía de directorios para producir resultados.
buscar un archivo en Linux usando el nombre de archivo
para encontrar un archivo usando el nombre de archivo, utilice la sintaxis find -name filename
. Omitir la ruta busca el archivo en todo el disco., Por ejemplo, puede encontrar un archivo llamado example.err
ubicado en su directorio /home/username
con el siguiente comando:
find -name example.err
debería ver una salida similar:
./username/example.err
encuentre un archivo en su directorio actual usando el comando find
eche un vistazo a la estructura de directorios y archivos de ejemplo. Se hace referencia a ellos a lo largo de los ejemplos de esta guía.,si desea encontrar el archivo example.err
dentro del directorio o cualquiera de sus subdirectorios, puede emitir el siguiente comando:
find . -name example.err
Su salida se asemeja a la siguiente:
./example.err./directory_1/example.err
la salida refleja directory_1
estructura del directorio:
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err
buscar archivos de imagen en Linux usando la línea de comandos
haciendo referencia a la estructura del archivo en la sección anterior, hay una imagen llamada image01.png
que se encuentra en la raíz (/
)s de la estructura de directorios.,
para encontrar el archivo image01.png
, ejecute el siguiente comando find
que localiza todos los archivos .png
almacenados dentro del directorio /
.
find -name *.png
Usted debe ver una salida similar a:
./image01.png
Cambiar el tipo de archivo de imagen y busca cualquier .jpg
archivos dentro del directorio raíz (/
):
find -name *.jpg
El resultado se asemeja al ejemplo., Consulte la estructura de directorios de ejemplo en la sección anterior para ver la ubicación del archivo.
./web_files/unnamed.jpg
encuentre un archivo vacío en su directorio usando la línea de comandos
para encontrar un archivo vacío en su directorio usando la línea de comandos, ejecute el siguiente comando:
find . -type f -empty
Si no se devuelve salida, entonces no hay un archivo vacío dentro de su directorio actual.
opciones y optimizaciones para encontrar archivos en Linux usando la línea de comandos
la configuración predeterminada parafind
ignoressymbolic links., Si quieres find
seguir y volver enlaces simbólicos, agregar la etiqueta -L
opción para el comando, como se muestra a continuación:
find -O3 -L /var/www/ -name "*.html"
Este comando permite que el máximo nivel de optimización (-O3
) y permite find
seguir enlaces simbólicos (-L
). find
busca en todo el árbol de directorios debajo de /var/www/
archivos que terminan con .html
.,
find
optimiza su estrategia de filtrado para aumentar el rendimiento. Se especifican tres niveles de optimización seleccionables por el usuario como -O1
, -O2
, y -O3
. La optimización -O1
es la predeterminada y obliga afind
a filtrar según el nombre del archivo antes de ejecutar todas las otras pruebas.,
la optimización en el nivel-O2
prioriza los filtros de nombre de archivo, como en -O1
, y luego ejecuta todos los filtros de tipo de archivo antes de continuar con otras condiciones que requieren más recursos. Nivel de -O3
optimización permite find
para realizar la más grave de optimización y reordena todas las pruebas en función de su gasto relativo y la probabilidad de su éxito.,
Command | Description |
---|---|
-O1 |
Filter based on filename first (default). |
-O2 |
File name first, then file-type., |
-O3 |
Permite find automáticamente cambiar el orden de la búsqueda basada en el uso eficiente de los recursos y la probabilidad. de éxito |
-maxdepth X |
Buscar en el directorio actual, así como todos los sub-directorios X niveles de profundidad. |
-iname |
Búsqueda sin tener en cuenta el texto del caso., |
-not |
Return only results that do not match the test case. |
-type f |
Search for files. |
-type d |
Search for directories., |
buscar archivos en Linux por hora de modificación usando la línea de comandos
el comando find
puede filtrar una jerarquía de directorios basada en la última vez que se modificó un archivo., Por ejemplo, el siguiente comando encuentra cualquier archivo con la extensión .err
que se haya modificado en los últimos 7 días:
find / -name "*err" -mtime -7
el comando de ejemplo devuelve la siguiente salida:
Use Grep para buscar archivos en Linux usando la línea de comandos
el find
el comando solo puede filtrar la jerarquía de directorios en función del nombre y los metadatos de un archivo. Si necesita buscar en función del contenido del archivo, utilice una herramienta como egrep., Considere el siguiente ejemplo:
find . -type f -exec grep "test" '{}' \; -print
Este comando busca cada objeto en la jerarquía de directorios actual (.
) que es un archivo (-type f
) y luego ejecuta el comando grep "test"
para cada archivo que cumpla las condiciones. Los archivos que coinciden se imprimen en la pantalla (-print
). Las llaves ({}
) son un marcador de posición para los resultados de búsqueda., El {}
están encerradas en comillas simples ('
) para evitar la entrega de grep
un nombre de archivo incorrecto. El comando -exec
termina con un punto y coma (;
), que debe escaparse (\;
) para evitar la interpretación por parte del shell.
el archivo utilizado en el ejemplo (example.err
) tiene un texto dentro que dice «test»., Cuando ejecuta el comando de ejemplo, verá una salida similar:
Grep identificó cada archivo dentro del directorio de trabajo actual que contiene la cadena «test».,
Nota
antes de la implementación del comando
find
de la opción-exec
, puede generar una salida similar al ejemplo anterior utilizando el comandoxargs
:find . -type f -print | xargs grep "test"
procese y encuentre archivos usando el comando Find en Linux
la opción -exec
ejecuta comandos contra cada objeto que coincida con el find
expresión., Considere el siguiente ejemplo:
find . -name "example.err" -exec chmod o+r '{}' \;
esto filtra todos los objetos en la jerarquía actual (.
) para archivos llamados rc.conf
y ejecuta el comando chmod o+r
para modificar los permisos de archivo de la div id=»6e30b51f0c»> resultados del comando.
el comando de ejemplo ejecuta y ejecuta la opción -exec
en el directorio raíz del proceso find
. Use -execdir
para ejecutar el comando especificado en el directorio donde reside la coincidencia., Esto puede aliviar los problemas de seguridad y producir un mejor rendimiento para algunas operaciones.
las opciones -exec
o -execdir
se ejecutan sin más solicitudes. Si prefiere que se le pregunte antes de que se tomen medidas, reemplace -exec
-ok
o -execdir
-okdir
.
cómo encontrar y eliminar archivos usando la línea de comandos de Linux
precaución
Utilice esta opción con extrema precaución.,
agregue la opción -delete
al final de una expresión de coincidencia para eliminar todos los archivos que coincidan. Utilice esta opción cuando esté seguro de que los resultados solo coinciden con los archivos que desea eliminar.
en el ejemplo siguiente, find
localiza recursivamente todos los archivos de la jerarquía que comienzan en el directorio actual y elimina todos los archivos que terminan con la extensión .err
:
find . -name "*.err" -delete
¿todavía tienes algunas preguntas?,
Únete a nuestra comunidad y publica tus preguntas para que otros entusiastas de Linode y Linux te ayuden.
Preguntas Relacionadas: