GNU/Linux >> Tutoriales Linux >  >> Linux

¡Papá, lo encontré!, 15 impresionantes ejemplos de comandos de búsqueda de Linux (Parte 2)

Hace un tiempo revisamos 15 ejemplos prácticos de comandos de búsqueda (Parte I). El comando Buscar puede hacer mucho más que buscar archivos según el nombre.
 
En este artículo (Parte 2), analicemos 15 ejemplos avanzados del comando de búsqueda incluyendo:encontrar archivos según el momento en que se accede, modifica o cambia, encontrar archivos comparativamente, realizar operaciones en archivos encontrados, etc.,
 
Ramesh Natarajan: Esa es mi dulce hijita en esa foto. Estaba muy feliz de ver al león marino en el Acuario de California Long Beach.

Buscar archivos según acceso/modificación/cambio de hora

Puede encontrar archivos basados ​​en los siguientes tres atributos de tiempo de archivo.

  1. Tiempo de acceso del archivo El tiempo de acceso se actualiza cuando se accede al archivo .
  2. Hora de modificación del archivo El tiempo de modificación se actualiza cuando se modifica el contenido del archivo .
  3. Cambiar hora del archivo El tiempo de cambio se actualiza cuando los datos del inodo cambian .

 
En los siguientes ejemplos, la diferencia entre la opción min y la opción de tiempo es el argumento.

  • argumento mínimo trata su argumento como minutos . Por ejemplo, min 60 =60 minutos (1 hora).
  • argumento de tiempo trata su argumento como 24 horas . Por ejemplo, tiempo 2 =2*24 horas (2 días).
  • Al hacer el cálculo de 24 horas, las partes fraccionarias se ignoran, por lo que 25 horas se toman como 24 horas, y 47 horas también se toman como 24 horas, solo 48 horas se toman como 48 horas. Para obtener más claridad, consulte la sección -atime del comando de búsqueda página man.

Ejemplo 1:busque archivos cuyo contenido se haya actualizado en la última hora

Para encontrar los archivos en función del tiempo de modificación del contenido, se utilizan las opciones -mmin y -mtime. La siguiente es la definición de mmin y mtime de la página man.

  • -mmin n Los datos del archivo se modificaron por última vez n minutos hace.
  • -mtime n Los datos del archivo se modificaron por última vez n*24 horas hace.

 
El siguiente ejemplo encontrará archivos en el directorio y subdirectorios actuales, cuyo contenido se actualizó en la última hora (60 minutos)

# find . -mmin -60

 
De la misma manera, el siguiente ejemplo encuentra todos los archivos (bajo el sistema de archivos raíz /) que se actualizaron en las últimas 24 horas (1 día).

# find / -mtime -1

Ejemplo 2:Buscar archivos a los que se accedió antes de 1 hora

Para encontrar los archivos según el tiempo de acceso al archivo, se usa la opción -amin y -atime. La siguiente es la definición de amin y atime de la página de manual de búsqueda.

  • -amin n Se accedió al archivo por última vez n minutos hace
  • -atime n Se accedió al archivo por última vez n*24 horas hace

 
El siguiente ejemplo encontrará archivos en el directorio y subdirectorios actuales, a los que se accedió en la última hora (60 minutos)

# find -amin -60

 
De la misma manera, el siguiente ejemplo encuentra todos los archivos (bajo el sistema de archivos raíz /) a los que se accedió en las últimas 24 horas (1 día).

# find / -atime -1

Ejemplo 3:busque archivos que se cambiaron exactamente antes de 1 hora

Para encontrar los archivos en función del tiempo de cambio del inodo del archivo, se utilizan las opciones -cmin y -ctime. La siguiente es la definición de cmin y ctime de la página del manual de búsqueda.

  • -cmin n El estado del archivo se modificó por última vez n minutos hace.
  • -ctime n El estado del archivo se modificó por última vez n*24 horas hace.

 
El siguiente ejemplo encontrará archivos en el directorio y subdirectorios actuales, que cambiaron en la última hora (60 minutos)

# find . -cmin -60

 
De la misma manera, el siguiente ejemplo encuentra todos los archivos (bajo el sistema de archivos raíz /) que se modificaron en las últimas 24 horas (1 día).

# find / -ctime -1

Ejemplo 4:Restringir la salida de búsqueda solo a archivos. (Mostrar solo archivos como resultados del comando de búsqueda)

El comando de búsqueda anterior también mostrará los directorios porque se accede a los directorios cuando se accede al archivo que contiene. Pero si desea que solo se muestren los archivos, escriba -escriba f en el comando de búsqueda como
 
El siguiente comando de búsqueda muestra los archivos a los que se accedió en los últimos 30 minutos.

# find /etc/sysconfig -amin -30
.
./console
./network-scripts
./i18n
./rhn
./rhn/clientCaps.d
./networking
./networking/profiles
./networking/profiles/default
./networking/profiles/default/resolv.conf
./networking/profiles/default/hosts
./networking/devices
./apm-scripts
[Note: The above output contains both files and directories]

# find /etc/sysconfig -amin -30 -type f
./i18n
./networking/profiles/default/resolv.conf
./networking/profiles/default/hosts
[Note: The above output contains only files]

Ejemplo 5:Restringir la búsqueda solo a archivos no ocultos. (No mostrar archivos ocultos en la salida de búsqueda)

Cuando no queremos que los archivos ocultos se enumeren en el resultado de la búsqueda, podemos usar la siguiente expresión regular.
La siguiente búsqueda muestra los archivos que se modificaron en los últimos 15 minutos. Y enumera solo los archivos no ocultos. es decir, archivos ocultos que comienzan con un . (punto) no se muestran en la salida de búsqueda.

# find . -mmin -15 \( ! -regex ".*/\..*" \)

Búsqueda comparativa de archivos mediante el comando Buscar

La mente humana puede recordar mejor las cosas por referencia, como por ejemplo, quiero encontrar archivos que edité después de editar el archivo "prueba". Puede encontrar archivos consultando la modificación de otros archivos de la siguiente manera.

Ejemplo 6:Buscar archivos que se modifican después de la modificación de un ARCHIVO en particular

Syntax: find -newer FILE

 
El siguiente ejemplo muestra todos los archivos que se modificaron después de modificar los archivos /etc/passwd. Esto es útil si desea realizar un seguimiento de todas las actividades que ha realizado después de agregar un nuevo usuario.

# find -newer /etc/passwd

Ejemplo 7:Buscar archivos a los que se accede después de la modificación de un ARCHIVO específico

Syntax: find -anewer FILE

 
El siguiente ejemplo muestra todos los archivos a los que se accede después de modificar /etc/hosts. Si recuerda haber agregado una entrada a /etc/hosts y desea ver todos los archivos a los que ha accedido desde entonces, use el siguiente comando.

# find -anewer /etc/hosts

Ejemplo 8:busque archivos cuyo estado haya cambiado después de la modificación de un ARCHIVO específico.

Syntax: find -cnewer FILE

 
El siguiente ejemplo muestra todos los archivos cuyo estado cambió después de modificar /etc/fstab. Si recuerda haber agregado un punto de montaje en /etc/fstab y desea conocer todos los archivos cuyo estado cambió desde entonces, use el siguiente comando.

find -cnewer /etc/fstab

Realizar cualquier operación en los archivos encontrados desde el comando Buscar

Hemos analizado muchas formas diferentes de encontrar archivos usando el comando de búsqueda en este artículo y también en nuestro artículo anterior. Si no está familiarizado con la búsqueda de archivos de diferentes maneras, le recomiendo que lea la parte 1.
 
Esta sección explica cómo realizar diferentes operaciones en los archivos desde el comando de búsqueda. es decir, cómo manipular los archivos devueltos por la salida del comando de búsqueda.
 
Podemos especificar cualquier operación en los archivos encontrados desde el comando de búsqueda.

find <CONDITION to Find files> -exec <OPERATION> \;

 
La OPERACIÓN puede ser cualquier cosa como:

  • comando rm para eliminar los archivos encontrados por el comando de búsqueda.
  • comando mv para cambiar el nombre de los archivos encontrados.
  • comando ls -l para obtener detalles de los archivos de salida del comando de búsqueda.
  • md5sum al buscar archivos de salida de comandos
  • comando wc para contar el número total de palabras en los archivos de salida del comando de búsqueda.
  • Ejecute cualquier comando de shell de Unix al buscar archivos de salida de comandos.
  • o Ejecute su propio script de shell personalizado / comando en archivos de salida de comando de búsqueda.

Ejemplo 9:ls -l en la salida del comando de búsqueda. Haga una lista larga de los archivos que se editaron en la última hora.

# find -mmin -60
./cron
./secure

# find -mmin -60 -exec ls -l {} \;
-rw-------  1 root root 1028 Jun 21 15:01 ./cron
-rw-------  1 root root 831752 Jun 21 15:42 ./secure

Ejemplo 10:Buscar solo en el sistema de archivos actual

Los administradores del sistema querrían buscar en el sistema de archivos raíz, pero no en las otras particiones montadas. Cuando tiene varias particiones montadas, y si desea buscar en /. Puede hacer lo siguiente.
 
El siguiente comando buscará archivos *.log a partir de /. es decir, si tiene varias particiones montadas bajo / (raíz), el siguiente comando buscará todas esas particiones montadas.

# find / -name "*.log"

 
Esto buscará el archivo solo en el sistema de archivos actual. La siguiente es la definición de xdev de la página de manual de búsqueda:

  • -xdev No descienda directorios en otros sistemas de archivos.

 
El siguiente comando buscará archivos *.log a partir de / (raíz) y solo en el sistema de archivos actual. es decir, si tiene varias particiones montadas en / (raíz), el siguiente comando NO buscará todas esas particiones montadas.

# find / -xdev -name "*.log"

Ejemplo 11:usar más de un { } en el mismo comando

El manual dice que solo es posible una instancia de {}. Pero puede usar más de un {} en el mismo comando, como se muestra a continuación.

# find -name "*.txt" cp {} {}.bkup \;

 
Es posible usar este {} en el mismo comando, pero no es posible usarlo en un comando diferente, digamos que desea cambiar el nombre de los archivos de la siguiente manera, lo que no dará el resultado esperado.

find -name "*.txt" -exec mv {} `basename {} .htm`.html \;

Ejemplo 12:Usar { } en más de una instancia.

Puede simularlo escribiendo un script de shell como se muestra a continuación.

# mv "$1" "`basename "$1" .htm`.html"

 
Estas comillas dobles son para manejar espacios en el nombre del archivo. Y luego llame a ese script de shell desde el comando de búsqueda como se muestra a continuación.

find -name "*.html" -exec ./mv.sh '{}' \;

Entonces, por cualquier motivo, si desea que se use el mismo nombre de archivo más de una vez, escribir el script de shell simple y pasar los nombres de archivo como argumento es la forma más sencilla de hacerlo.

Ejemplo 13:Redirigir errores a /dev/null

Redirigir los errores no es una buena práctica. Un usuario experimentado comprende la importancia de imprimir el error en la terminal y solucionarlo.
 
Particularmente en el comando de búsqueda, redirigir los errores no es una buena práctica. Pero si no desea ver los errores y desea redirigirlo a nulo, hágalo como se muestra a continuación.

find -name "*.txt" 2>>/dev/null

 
A veces esto puede ser útil. Por ejemplo, si está tratando de encontrar todo el archivo *.conf en / (raíz) de su cuenta, es posible que reciba muchos mensajes de error de "Permiso denegado" como se muestra a continuación.

$ find / -name "*.conf"
/sbin/generate-modprobe.conf
find: /tmp/orbit-root: Permission denied
find: /tmp/ssh-gccBMp5019: Permission denied
find: /tmp/keyring-5iqiGo: Permission denied
find: /var/log/httpd: Permission denied
find: /var/log/ppp: Permission denied
/boot/grub/grub.conf
find: /var/log/audit: Permission denied
find: /var/log/squid: Permission denied
find: /var/log/samba: Permission denied
find: /var/cache/alchemist/printconf.rpm/wm: Permission denied
[Note: There are two valid *.conf files burned in the "Permission denied" messages]

 
Entonces, si solo desea ver el resultado real del comando de búsqueda y no el mensaje de error "Permiso denegado", puede redirigir el mensaje de error a /dev/null como se muestra a continuación.

$ find / -name "*.conf" 2>>/dev/null
/sbin/generate-modprobe.conf
/boot/grub/grub.conf
[Note: All the "Permission denied" messages are not displayed]

Ejemplo 14:Sustituya el espacio por un guión bajo en el nombre del archivo.

Los archivos de audio que descarga de Internet en su mayoría vienen con espacios. Pero tener espacio en el nombre del archivo no es tan bueno para los sistemas Linux. Puede utilizar la combinación de comandos de búsqueda y cambio de nombre como se muestra a continuación para cambiar el nombre de los archivos, sustituyendo el espacio por un guión bajo.
 
Lo siguiente reemplaza el espacio en todos los archivos *.mp3 con _

$ find . -type f -iname “*.mp3″ -exec rename “s/ /_/g” {} \;

Ejemplo 15:Ejecutar dos comandos de búsqueda al mismo tiempo

Como se muestra en los ejemplos del comando de búsqueda en su página de manual, la siguiente es la sintaxis que se puede usar para ejecutar dos comandos en un solo recorrido.
 
El siguiente ejemplo de comando de búsqueda, atraviesa el sistema de archivos solo una vez, enumera los archivos y directorios setuid en /root/suid.txt y los archivos grandes en /root/big.txt.

# find /    \( -perm -4000 -fprintf /root/suid.txt '%#m %u %p\n' \) , \
 \( -size +100M -fprintf /root/big.txt '%-10s %p\n' \)

Nuestros otros 15 artículos de la serie de ejemplo

  • 15 ejemplos prácticos de comandos de búsqueda de Unix:parte 1
  • 15 ejemplos prácticos de comandos Grep de Linux
  • Domine la historia de la línea de comandos de Unix con 15 ejemplos
  • Manipule archivos de audio usando 15 ejemplos de comandos de Sox increíbles (intercambio de sonido)
  • 15 ejemplos de comandos avanzados de PostgreSQL
  • 15 trucos, consejos y trucos excelentes para la Búsqueda de Google
  • 15 ejemplos avanzados de DBA de PostgreSQL
  • 15 usos prácticos de los ejemplos de comandos de Mysqladmin
  • 15 impresionantes ejemplos de trabajos cron de Linux

 
Si necesita regresar, marque esta página en del.icio.us como referencia práctica.


Linux
  1. 5 herramientas de línea de comandos para encontrar archivos rápidamente en Linux

  2. 25 ejemplos prácticos útiles del comando find en Linux

  3. Uso del comando de búsqueda de Linux:uso con ejemplos

  4. Ejemplos prácticos del comando rsync en Linux

  5. encontrar ejemplos de comandos en Linux

Comando lsof en Linux (10 ejemplos)

Cómo encontrar archivos con el comando fd en Linux

Tutorial de comando de búsqueda de Linux (con ejemplos)

¡Mami, lo encontré! — 15 ejemplos prácticos de comandos de búsqueda de Linux

Comando lsof en Linux con ejemplos

Comando Linux comm con ejemplos