El comando Linux find
es una poderosa herramienta que permite a los administradores de sistemas localizar y administrar archivos y directorios basados en una amplia gama de criterios de búsqueda. Puede encontrar directorios y archivos por su nombre, su tipo o extensión,tamaño, permisos, etc.
además de localizar archivos y directorios, combinar el comando find
con otros le permite tomar medidas sobre los resultados., Agregar la opción -exec
permite a los administradores de sistemas ejecutar comandos externos y realizar acciones como copiar, mover, eliminar o cambiar los permisos de los archivos que coincidan con los criterios especificados, como Tamaño, Nombre, etc.
en este artículo, comenzaremos explicando los comandos básicos de Linux find con ejemplos. Esto le mostrará cómo encontrar archivos y directorios. Luego le mostraremos cómo usar la opción -exec
para actuar sobre los archivos o directorios en función de su tamaño, permisos, etc.,
la sintaxis general para el comando find es
find {path} {name -of-file or dir-to-search} {action-to-take}
donde,
en este tutorial, explicaremos cómo localizar archivos y directorios que coincidan con patrones especificados. También veremos cómo realizar acciones sobre los archivos o directorios que localiza el comando find. La guía está basada en Ubuntu pero es aplicable a la mayoría de las distribuciones y versiones de Linux.
Buscar archivos y Directorios
Buscar archivos específicos por nombre o extensión
para buscar un archivo específico, ejecute el siguiente comando desde el directorio raíz (/)., El comando contiene el nombre exacto del archivo que está buscando.
find . -name file22.txt
Output
./test/file22.txt./sales/file22.txt
tenga en cuenta que los resultados incluyen la ruta. Esto es importante si no conoce el directorio donde se encuentra el archivo, o cuando está en más de un lugar.
también puede buscar el archivo en otro directorio mientras esté en la ubicación actual. En este caso, debe proporcionar la ruta del directorio donde desea buscar.,
find ./test -name file22.txt
buscando archivos específicos en otro directorio
en nuestro caso, buscaremos todos los que comiencen con el archivo de letras en el directorio de prueba.
find ./test -name file*
Salida
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
Buscar archivos por extensión
Para encontrar un archivo en Linux con una extensión determinada, agregar el comando.,
find . -name *.txt
Salida
./test/subtest/subfil.txt./test/file22.txt./test/file1.txt./home1/files32.txt./home2/file22.txt./qa/tags.txt
Buscar archivos y directorios por nombre
Utilice el comando siguiente para buscar archivos y directorios que comienzan con las letras qa
. En nuestro equipo, tenemos la etiqueta qatree.txt
y qa.txt
así como archivos de un directorio con el nombre qa
.,
Si ejecutamos el comando;
find ./ -name "qa*"
devuelve la siguiente salida
./test/qatree.pdf./test/qa.txt./home/qa
El comando devuelve los archivos y directorios de la coincidencia de los criterios de búsqueda. Para buscar solo archivos o directorios, debe especificar esto en el comando.
buscar archivos o directorios solamente
para los archivos Solamente, utilice el interruptor type f
.
sólo los Archivos
find ./ -type f -name "qa*"
Salida
./test/qatree.pdf./test/qa.txt
sólo Directorios
Añadir la etiqueta type d
opción para localizar los directorios sólo.,
find ./ -type d -name "qa*"
salida
./home/qa
comando de búsqueda insensible a mayúsculas
todas las búsquedas con -name
el interruptor distingue entre mayúsculas y minúsculas y no dará resultados con mayúsculas. Para obtener todos los casos, utilice la opción -iname
.
find ./ -iname "qa*"
Output
./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa
buscar un archivo de varios directorios
para encontrar los archivos en diferentes directorios, agregue sus rutas en el comando., En nuestro caso, comprobaremos los directorios test
y numeric
.
find ./test ./numeric -name file22.txt -type f
Salida
./test/file22.txt/root/numeric/file22.txt
Buscar varios archivos con diferentes extensiones de todos los directorios
puede utilizar el comando buscar para localizar los archivos múltiples que comparten las diferentes extensiones tales como *.doc
, *.txt
*.pdf
, etc. Esto se puede hacer por separado, una extensión a la vez, o usando solo un comando que incluya todas las extensiones deseadas.,
find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )
output
buscar archivos que contienen cierto texto
a veces, desea acceder a un archivo que contiene cierto texto, pero no puede recuperar su nombre de archivo o ubicación. Este comando le permite encontrar todos los archivos que contienen el texto de destino.
para buscar todos los archivos que contienen la palabra hiperconvergencia», use;
find / -type f -exec grep -l -i "hyperconvergence" {} ;
Output
/root/numeric/hci/root/HCIP
la opción –I permite que el comando ignore los casos y encontrará el texto en mayúscula o no, es decir , hiperconvergencia, hiperconvergencia, etc.,
para buscar los archivos en un directorio específico, simplemente agréguelo al comando
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
Output
./numeric/hci
buscar archivos y directorios basados en el tamaño
puede encontrar todos los archivos o directorios que son más pequeños, iguales o mayores que un cierto tamaño, dentro de un cierto rango o vacíos. Utilice el formato de tamaño adecuado dependiendo del tipo de archivos o directorios que esté buscando.,ND archivos de un cierto tamaño – igual a 30MB
para buscar encontrar todos los archivos de 30MB
find / -size 30M
buscar archivos más grandes que un tamaño especificado
find -size +2M
salida
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
buscar archivos de menos de 10MB en el directorio actual
find . -type f -size -10M
buscar archivos con tamaños entre 100-200MB
al buscar archivos dentro de un rango específico, como entre 100 y 200 MB
find / -size +100M -size -200M
buscar directorios más grandes que 20KB
find / -type d -size +20k
buscar archivos y directorios vacíos.,
Archivos
find ./ -type f -size 0
o
find ./ -type f –empty
Directorios
find ./ -type d –empty
Buscar archivos por la edad o el tiempo de modificación
Buscar archivos de más de n días
find /path/ -type f -name '*.txt' -mtime +8
El -mtime +8
buscará txt
archivos que son mayores de 8 días.,
por fecha de modificación
esto buscará archivos modificados dentro de las últimas 17 horas
find . -mtime -17 -type f
busca directorios modificados dentro de los últimos 10 días
find . -mtime -10 -type d
buscar archivos basados en el acceso o modificación
buscar archivos basados en la fecha u hora de acceso. Esto le permite ver los archivos a los que se ha accedido o no dentro de un período especificado.
para ver los archivos a los que no se ha accedido en los últimos 10 días en el directorio principal.,
find /home -atime +10
los Archivos de acceder a exactamente 10 días
find /home -atime 10
Accedido en los últimos 10 días
find /home -atime -10
Buscar archivos modificados dentro de los últimos n días
también puede buscar los archivos en el /home
directorio modificado en los últimos 10 días, utilizando el comando;
find /home -mtime -10
Buscar archivos modificados dentro de un período específico.
por ejemplo, todos los archivos modificados entre 6 y 15 días atrás en el directorio home.,
find /home -type f -mtime +6 -mtime -15
acceso a Archivos y directorios en los últimos 10 minutos
Para encontrar los archivos visitado en los últimos 10 minutos, utilice el -amin opción.
find . -amin -10 -type f
Salida
./.bash_history./.profileroot@ubuntu1804:~#
Directorios visitado en los últimos 10 minutos
find . -amin -10 -type d
Encontrar los archivos correspondientes a permisos específicos
la Sintaxis
$ find -perm mode
Cuando el modo es el permiso que se numéricos tales como 644, 655, 700, 777
, etc, o letras como u=x, a=r+x,
etc.,
Puede especificar el modo de las siguientes tres maneras diferentes.
- Sin prefijo cuando desea encontrar archivos con los permisos exactos especificados.
- With «
-
» for files with at least the specified permission. Esto devuelve archivos con los permisos especificados, así como permisos adicionales superiores. - Usar «
/
» requiere especificar el propietario o grupo con el permiso para el archivo.,
buscar archivos con permiso 777
find -perm 777
salida
./file1
buscar archivos con al menos 766
find-perm -766
output
./file2./file1
el comando busca todos los archivos en los que
- el propietario del archivo tiene permisos de lectura/escritura/ejecución.
- Grupo tiene permisos de lectura/escritura
- Otros tienen permiso de lectura/escritura
Como tal, devuelve dos archivos que cumplen con este criterio archivo1 y archivo2., Los archivos no necesitan tener los permisos exactos 766
y pueden tener permisos adicionales, pero deben tener al menos los especificados.
buscar archivos editables por el propietario
ahora usaremos el «/
» para buscar archivos editables por su propietario, grupo u otros.
find -perm /222../file2./file3./file1
El anterior busca los archivos que son modificables por su propietario o grupo.
esto devuelve archivos que son escribibles por cualquiera pero no necesariamente por ambos. Para ver los archivos, donde ambos tienen permisos de escritura, use el prefijo -.,
./file2./file1
buscar archivos propiedad de un usuario
buscar todos los archivos propiedad de Jack
find /home -user jack
Output
/home/jack/home/jack/examples.desktop/home/jack/.gnupg/home/jack/.gnupg/private-keys-v1.d/home/jack/ans.cgi
buscar archivos específicos propiedad de un usuario
buscar todos los archivos de texto propiedad de Jack
find /home -user jack -iname "*.txt"
output
/home/jack/docs/file32.txt
buscar y listar archivos y directorios junto con sus permisos
find -name "*.conf" | ls -l
output
buscar y actuar sobre los resultados
en en esta sección, veremos cómo puede actuar sobre los archivos que coinciden con el patrón especificado en el comando find.,
buscar archivos y cambiar permisos
buscar y cambiar permisos de ciertos tipos de archivos. En nuestro caso, trabajaremos con archivos PHP con diferentes permisos como se muestra a continuación.,
ahora vamos a buscar todos los archivos PHP (arriba) y reemplazar sus permisos con 755
find ver -name "*.php" -type f -exec chmod 755 {} ;
El comando busca de archivos PHP en el ver
directorio y, a continuación, establece su permiso para 755
(rwxr-xr-x
)
Resultados
Buscar y cambiar permisos de archivos y directorios
Buscar archivos con permisos 644 y el cambio que ellos han 655 permisos
find . -type f -perm 644 -exec chmod 655 {} ;
también puede buscar directorios con permisos 644 y reemplazar esto con 755.,
find . -type d -perm 644
Salida
./docs
La carpeta docs tiene permisos 644
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
establecer A 755
, corremos
find . -type d -perm 644 -exec chmod 755 {} ;
Ahora podemos comprobar de nuevo para ver exactamente qué 755
find . -type d -perm 755
Salida
.
./docs
desde arriba podemos ver que los directorios root y docs tienen los permisos 755.,
Ls –la
comando da los siguientes detalles
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
Buscar y copiar archivos o directorios
Encontrar y copiar un archivo específico para un directorio
El comando de abajo se encuentra el file22.tx
t archivo y copiarlo a la ~/tmp/images
directorio.,
find -iname file22.txt -exec cp {} ~/tmp/images ;
buscar y copiar un tipo de archivos a un directorio
para encontrar archivos como imágenes con jpg
extensión en el directorio actual y copiarlos en una ubicación diferente como una carpeta de imágenes, use;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
esto encontrará y copiará todos los archivos JPG a la carpeta ~/tmp/images
.
buscar y copiar un archivo a muchos directorios
buscar y copiar un solo a varios directorios.,
find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;
se encuentra el archivo de hci archivo y cópielo en los tres directorios de /tmp/dir1/ /tmp/dir2/
y $HOME/3/
Buscar y mover archivos a un directorio diferente
Para mover un archivo de un directorio a otro., Para mover el universal.php
archivo;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
Buscar y mover archivos con una extensión determinada, a una carpeta diferente
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
Encontrar ciertos archivos y mover a una determinada carpeta diferente
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
El comando busca todos los archivos con nombres que comienzan con uni
, y con alguna extensión. Luego los mueve al directorio /unifiles/
buscar y mover archivos basados en la edad
buscar y mover archivos anteriores a los días especificados a una ubicación diferente, como el archivo.,
find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;
esto buscará archivos pdf de más de 20 días y los moverá al directorio backup1.,los archivos y directorios
La sintaxis para la búsqueda y eliminación de archivos o directorios en el directorio actual es
find . -type f -name "file to delete" -exec rm -f {} ;
eliminar sólo los archivos o
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
para borrar directorios sólo
Encontrar y eliminar archivos específicos sólo
Para encontrar y eliminar archivos que inician con til, uso;
find . -type f -name "til*" -exec rm {} ;
Para encontrar y eliminar directorios de inicio con til
find . -type d -name "til*" -exec rm {} ;
Eliminar archivos y directorios
find . -name "til*" -exec rm -rf {} ;
Esto eliminará los archivos y directorios que comienzan con las letras til.,
eliminar por extensión
a continuación se muestra cómo puede localizar y eliminar todos los archivos txt
en el directorio actual. Reemplazar el txt
con otra extensión, tales como bak
, pdf
o a cualquier otro que desee quitar.
find . -type f -name "*.txt" -exec rm -f {} ;
en caso de que desee que el sistema le pida que confirme antes de eliminar cada archivo, agregue la opción-i como se muestra a continuación.,
find . -type f -name "*.txt" -exec rm -i {} ;
Output
de forma predeterminada, la opción-rm
no eliminará los directorios y debe usar la opción–r
para garantizar una eliminación recursiva. Esto asegura la eliminación de directorios vacíos y aquellos que contienen archivos. La opción -f
fuerza la eliminación y se usa tanto para los archivos como para los directorios.
buscar y eliminar archivos anteriores a n días
buscar y eliminar archivos de copia de seguridad anteriores a 20 días del directorio actual.,
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
esto eliminará todos los archivos.bak
anteriores a 20 días.
buscar y eliminar directorios solamente
para eliminar un directorio llamado dir22
find . -type d -name dir22 -exec rm -rf {} ;
asegúrese de que coincide con el caso del nombre del directorio o utilice la opción -iname
.
find . -type d -iname Dir22 -exec rm -rf {} ;
Elimina tanto Dir22
y dir22
Para confirmar antes de la eliminación, utilice la opción-i.
find . -type d -iname Dir22 -exec rm -rf -i {} ;
Output
rm: remove directory ‘./ Dir22’?, N
rm: eliminar directorio’./ dir22′? y
En nuestro caso, hemos ingresado n
directorio Dir22
que no será eliminado y y
para el dir22
que será eliminado.
buscar y eliminar archivos vacíos
puede utilizar cualquiera de los siguientes comandos para localizar archivos vacíos y eliminarlos automáticamente.
find ./ -type f -size 0 -exec rm -f {} ;
or
find ./ – tipo F-Tamaño 0 / xargs rm-F
O
buscar .,/ – type F-size 0-delete
buscar y eliminar directorios vacíos
para eliminar directorios vacíos usaremos la opción d
.
find ./ -type d -empty -exec rmdir {} ;
otra alternativa es usar delete en lugar de remove.
find ./ -type d -empty -delete
tenga en cuenta que eliminar el sistema o archivos críticos de su computadora puede dañar el sistema operativo o las aplicaciones o provocar la pérdida de sus datos importantes.
para evitar eliminaciones accidentales, se recomienda utilizar una cuenta de usuario que no sea root., Además, asegúrese de que está eliminando los archivos correctos que no son útiles y que tiene una copia de seguridad de todos sus archivos de datos por si acaso.
¿qué sigue?
siga adelante y pruebe los comandos de búsqueda de Linux anteriores en su laboratorio o entorno de no producción. Vea si puede usar algunos para automatizar la limpieza del sistema de archivos con Crontab. Y, para dominar Linux, echa un vistazo a este curso en línea.