Buscar comando en Linux (buscar archivos y directorios)
el comando find
es una de las herramientas más poderosas en el arsenal de los administradores de sistemas Linux. Busca archivos y directorios en una jerarquía de directorios basada en una expresión dada por el Usuario y puede realizar acciones especificadas por el usuario en cada archivo coincidente.
Puede usar el comando find
para buscar archivos y directorios en función de sus permisos, tipo, fecha, propiedad, tamaño y más., También se puede combinar con otras herramientas como grep
o sed
.
find Command Syntax #
la sintaxis general del comando find
es la siguiente:
- El atributo
options
controla el tratamiento de los enlaces simbólicos, opciones de depuración y método de optimización. - El atributo
path...
define el directorio o directorios de inicio donde find buscará los archivos., - El atributo
expression
se compone de opciones, patrones de búsqueda y acciones separadas por operadores.
para buscar archivos en un directorio, el usuario que invoca el comando find
necesita tener permisos de lectura en ese directorio.
echemos un vistazo al siguiente ejemplo:
Buscar Archivos por Nombre #
buscar archivos por nombre, es probablemente el más común el uso de la etiqueta find
comando., Para encontrar un archivo por su nombre, use la opción -name
seguida del nombre del archivo que está buscando.
por ejemplo, para buscar un archivo llamado document.pdf
en el directorio /home/linuxize
, usaría el siguiente comando:
para ejecutar una búsqueda que no distingue entre mayúsculas y minúsculas, cambie el -name
opción con -iname
:
el comando anterior coincidirá con «Document.pdf», » DOCUMENT.pdf» ..sucesivamente.,
buscar archivos por extensión #
buscar archivos por extensión es lo mismo que buscar archivos por nombre. Por ejemplo, para encontrar todos los archivos que terminen con .log.gz
dentro del directorio /var/log/nginx
, debe escribir:
es importante mencionar que debe citar el patrón o escapar del asterisco *
símbolo con barra invertida \
para que no sea interpretado por el shell cuando se utiliza el carácter comodín.,
Para encontrar todos los archivos que no coinciden con la expresión regular *.log.gz
puede utilizar el -not
opción. Por ejemplo, para encontrar todos los archivos que no terminan en *.log.gz
usaría:
buscar archivos por tipo #
a veces es posible que deba buscar tipos de archivos específicos, como archivos normales, directorios o enlaces simbólicos. En Linux todo es un archivo.,div>: named pipe (FIFO)
s
: socketpor ejemplo, para encontrar todos los directorios en el directorio de trabajo actual , usaría:
el ejemplo común sería cambiar recursivamente los permisos del archivo del sitio web a 644
y permisos de directorio a 755
usando el comando chmod
:
buscar archivos por tamaño #
para buscar archivos basados en el tamaño del archivo, pase el -size
parámetro junto con el criterio de tamaño.,9fdb538a6b»>: bloques de 512 bytes (por defecto)
c
: bytesw
: dos bytes palabrask
: KilobytesM
: MegabytesG
: GigabytesEl siguiente comando para buscar todos los archivos de exactamente 1024
bytes dentro de la etiqueta /tmp
directorio:
El find
comando también permite buscar los archivos que son más o menos de un tamaño especificado.,
en el siguiente ejemplo, buscamos todos los archivos inferiores a 1MB
dentro del directorio de trabajo actual. Observe el signo -
símbolo antes de que el valor tamaño:
Si desea buscar archivos con un tamaño mayor que el 1MB
, entonces usted necesita para usar el plus +
símbolo:
Usted puede incluso buscar archivos dentro de un rango de tamaño., El siguiente comando encontrará todos los archivos entre 1
y 2MB
:
buscar archivos por fecha de modificación #
el comando find
puede también busque archivos en función de su última modificación, acceso o hora de cambio.
igual que cuando se busca por tamaño, use los símbolos más y menos para «mayor que»o» menor que».
digamos que hace unos días, modificaste uno de los archivos de configuración de dovecot, pero Olvidaste cuál., Puede filtrar fácilmente todos los archivos bajo el directorio /etc/dovecot/conf.d
que termina con .conf
y ha sido modificado en los últimos cinco días:
Aquí hay otro ejemplo de filtrado de archivos basado en la fecha de modificación utilizando el -daystart
opción., El comando a continuación enumerará todos los archivos en el directorio /home
que se modificaron 30
o más días atrás:
buscar archivos Por permisos #
el -perm
opción le permite buscar archivos basados en los permisos de archivo.,
por ejemplo, para encontrar todos los archivos con permisos de exactamente 775
dentro del directorio /var/www/html
, usaría:
puede prefijar el modo numérico con menos -
o barra diagonal /
.
cuando slash /
se usa como prefijo, entonces al menos una categoría (usuario, grupo u otros) debe tener al menos los bits respectivos establecidos para que un archivo coincida.,
considere el siguiente comando de ejemplo:
el comando anterior coincidirá con todos los archivos con permisos de lectura establecidos para usuario, grupo u otros.
si se usa menos -
como prefijo, entonces para que el archivo coincida, se deben establecer al menos los bits especificados., El siguiente comando buscará archivos que tienen permiso de lectura y escritura para el propietario y el grupo y son legibles por otros usuarios:
buscar archivos por propietario #
para encontrar archivos propiedad de un usuario o grupo en particular, use el -user
y -group
opciones.
por ejemplo, para buscar todos los archivos y directorios propiedad del usuario linuxize
, debe ejecutar:
Aquí hay un ejemplo del mundo real., Supongamos que desea encontrar todos los archivos propiedad del usuario www-data
y cambiar la propiedad de los archivos coincidentes de www-data
a nginx
:
buscar y eliminar archivos #
para eliminar todos los archivos coincidentes, añada la opción -delete
al final de la expresión coincidente.
asegúrese de usar esta opción solo cuando esté seguro de que el resultado coincide con los archivos que desea eliminar., Siempre es una buena idea imprimir los archivos coincidentes antes de usar la opción -delete
.
por ejemplo, Para eliminar todos los archivos que terminan con la etiqueta .temp
desde el /var/log/
, se debería utilizar:
-delete
opción con extrema precaución. El comando find
se evalúa como una expresión y si agrega la opción -delete
primero, el comando eliminará todo lo que esté debajo de los puntos de inicio que especificó.,Cuando se trata de directorios, find
solamente puede eliminar directorios vacíos, igual que rmdir
.
conclusión #
le hemos mostrado cómo usar el comando find
con varias opciones y criterios.
Este artículo debe darle una comprensión fundamental de cómo localizar archivos en sus sistemas Linux. También puede visitar la página de manual find
y leer sobre todas las otras opciones poderosas del comando find
.