Curiosidades De Hackers
EXPRESIONES REGULARESLINUX

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