Cómo encontrar archivos en Linux usando la línea de comandos

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 del find proceso.,
  • starting/path atributo define el directorio de nivel superior donde find comienza el filtrado.
  • El atributoexpression 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 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 find de la opción -exec, puede generar una salida similar al ejemplo anterior utilizando el comando xargs:

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:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *