EXPRESIONES REGULARES(FIND)
Comenzando
Uso$ find [path...] [options] [expression]
Comodín
$ find . -name "*.txt"
$ find . -name "2020*.csv"
$ find . -name "json_*"
Ejemplos de opciones
| Opción | Ejemplo | Descripción |
|---|---|---|
-type |
encontrar . -tipo d | Encuentra solo directorios |
-name |
encontrar . -type f -name «*.txt» | Buscar archivo por nombre |
-iname |
encontrar . -tipo f -iname «hola» | Buscar archivo por nombre (sin distinción de caso) |
-size |
encontrar . -tamaño + 1G | Encuentra archivos de más de 1G |
-user |
encontrar . -type d -user jack | Encuentra el archivo de Jack |
-regex |
find /var -regex ‘.*\/tmp\/.*[0-9]*.file’ | Usando Regex con find |
-maxdepth |
encontrar . -maxdepth 1 -name «a.txt» | En el directorio y subdirectorios actuales |
-mindepth |
find / -mindepth 3 -maxdepth 5 -name pass | Entre los niveles 2 y 4 del subdirectorio |
Tipo
-type d |
Directorio |
-type f |
Archivo |
-type l |
Enlace simbólico |
-type b |
Bloque tamponado |
-type c |
Carácter sin amortiguar |
-type p |
Tubo con nombre |
-type s |
Zócalo |
Talla
-size b |
Bloques de 512 bytes (predeterminado) |
-size c |
Bytes |
-size k |
Kilobytes |
-size M |
Megabytes |
-size G |
Gigabytes |
-size T |
Terabytes (solo BSD) |
-size P |
Petabytes (solo BSD) |
Tamaño + / –
Encuentra todos los archivos más grandes que 10 MB
$ find / -size +10M
Encuentra todos los archivos de menos de 10 MB
$ find / -size -10M
Encuentra todos los archivos que sean exactamente 10M
$ find / -size 10M
Encuentra Tamaño entre 100 MB y 1 GB
$ find / -size +100M -size -1G
Los + y - los prefijos significan mayor y menor que, como de costumbre.
Nombres
Buscar archivos usando el nombre en el directorio actual
$ find . -name tecmint.txt
Buscar archivos en el directorio de inicio
$ find /home -name tecmint.txt
Encuentre archivos usando el nombre e ignorando el caso
$ find /home -iname tecmint.txt
Encuentra directorios usando el nombre
$ find / -type d -name tecmint
Encuentra archivos php usando el nombre
$ find . -type f -name tecmint.php
Encuentra todos los archivos php en el directorio
$ find . -type f -name "*.php"
Permisos
Encuentre los archivos cuyos permisos son 777.
$ find . -type f -perm 0777 -print
Encuentre los archivos sin permiso 777.
$ find / -type f ! -perm 777
Encuentra archivos de conjunto SUID.
$ find / -perm /u=s
Encuentra archivos de configuración SGID.
$ find / -perm /g=s
Encuentra archivos de solo lectura.
$ find / -perm /u=r
Encuentra archivos ejecutables.
$ find / -perm /a=x
Propietarios y grupos
Encuentra un solo archivo basado en el usuario
$ find / -user root -name tecmint.txt
Encuentra todos los archivos según el usuario
$ find /home -user tecmint
Encuentra todos los archivos según el grupo
$ find /home -group developer
Encuentra archivos particulares del usuario
$ find /home -user tecmint -iname "*.txt"
Múltiples nombres de archivo
$ find . -type f \( -name "*.sh" -o -name "*.txt" \)
Encuentra archivos con .sh y .txt extensiones
Múltiples dirs
$ find /opt /usr /var -name foo.scala -type f
Encuentra archivos con múltiples dirs
Vacío
$ find . -type d -empty
Eliminar todos los archivos vacíos en un directorio
$ find . -type f -empty -delete
Buscar fecha y hora
Significa {.col-span-2}
| Opción | Descripción |
|---|---|
atime |
tiempo de acceso (último archivo de tiempo abierto) |
mtime |
tiempo modificado (el contenido del archivo de última hora se modificó) |
ctime |
tiempo cambiado (el último inodo del archivo de tiempo se cambió) |
Ejemplo
| Opción | Descripción |
|---|---|
-mtime +0 |
Modificado hace más de 24 horas |
-mtime 0 |
Modificado entre ahora y hace 1 día |
-mtime -1 |
Modificado hace menos de 1 día (igual que -mtime 0) |
-mtime 1 |
Modificado entre 24 y 48 horas atrás |
-mtime +1 |
Modificado hace más de 48 horas |
-mtime +1w |
Última modificación hace más de 1 semana |
-atime 0 |
Última acceso entre ahora y hace 24 horas |
-atime +0 |
Accedido hace más de 24 horas |
-atime 1 |
Accedido entre 24 y 48 horas atrás |
-atime +1 |
Accedido hace más de 48 horas |
-atime -1 |
Accedido hace menos de 24 horas (igual que -atime 0) |
-ctime -6h30m |
El estado del archivo cambió en las últimas 6 horas y 30 minutos. |
Ejemplos
Encuentra los últimos 50 días de archivos modificados
$ find / -mtime 50
encontrar los últimos 50 días de archivos a los que se accede
$ find / -atime 50
encuentre los últimos 50-100 días archivos modificados
$ find / -mtime +50 -mtime -100
encontrar archivos modificados en la última 1 hora
$ find / -cmin -60
encontrar archivos modificados en la última hora
$ find / -mmin -60
encontrar archivos a los que se accede en la última hora
$ find / -amin -60
Encontrar
Encontrar y eliminar {.row-span-2}
Encuentra y elimina múltiples archivos
$ find . -type f -name "*.mp3" -exec rm -f {} \;
Buscar y eliminar un solo archivo
$ find . -type f -name "tecmint.txt" -exec rm -f {} \;
Encuentra y elimina archivos de 100mb
$ find / -type f -size +100m -exec rm -f {} \;
Encuentra archivos específicos y elimina
$ find / -type f -name *.mp3 -size +10m -exec rm {} \;
Encontrar y reemplazar
Encuentra todos los archivos y modifica el contenido const a let
$ find ./ -type f -exec sed -i 's/const/let/g' {} \;
Encuentre archivos legibles y grabables y modifique el contenido old a new
$ find ./ -type f -readable -writable -exec sed -i "s/old/new/g" {} \;
Encontrar y cambiar el nombre
Buscar y sufijo (agregado .bak)
$ find . -type f -name 'file*' -exec mv {} {}.bak\;
Buscar y cambiar el nombre de la extensión (.html => .php)
$ find . -type f -name "*.html" -exec sh -c 'mv "$0" "${0%.html}.php"' {} \;
Encontrar y copiar
Buscar y copiar en otro directorio
$ find . -type f -name "*.mp3" -exec cp {} /tmp/ \;
Contar archivos encontrados
Contar archivos encontrados
$ find /etc -type f | wc -l
Ejemplos avanzados
Encuentra todos los archivos PHP modificados en los últimos 10 días y haz una copia de seguridad de ellos
$ find /var/www -name "*.php" -type f -mtime -10 -exec cp {} {}.bak \;
Encuentra y elimina archivos vacíos dentro del directorio actual y sus subdirectorios
$ find . -type d -empty -delete
Encuentra todos los archivos que no pertenecen al propietario «jack» y cambia su propiedad a «jack»
$ find / -not -user jack -exec chown jack {} \;
Encuentra todos los archivos que contienen la palabra «OpenAI» y muestra sus contenidos
$ find / -type f -exec grep -l "OpenAI" {} \; -exec cat {} \;
Encuentra y muestra los 10 archivos más grandes en el sistema
$ find / -type f -exec du -Sh {} + | sort -rh | head -n 10
