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
optionscontrola el comportamiento y el método de optimización delfindproceso., -
starting/pathatributo define el directorio de nivel superior dondefindcomienza el filtrado. - El atributo
expressioncontrola 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 findque localiza todos los archivos .pngalmacenados 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). findbusca 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
findde 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: