GNU/Linux >> Tutoriales Linux >  >> Linux

¿Tiene problemas con los directorios de eliminación de comandos de búsqueda?

No estoy seguro de lo que estoy haciendo mal en esto. He leído un montón de publicaciones y sitios web, pero todavía tengo problemas.

Necesito verificar un sistema en busca de archivos que hayan cambiado el día anterior, pero debo omitir ciertas carpetas montadas, ya que están montadas en unidades con toneladas de TB.

Esta es la configuración:
Tengo algunas unidades montadas en carpetas dentro de /usr/local/connect/
/usr/local/connect/logs –> se monta en un NFS
/usr/ local/connect/DR01 –> se monta en un recurso compartido DR
algunos más como este…

Quiero ejecutar un comando de búsqueda normal (o cualquier comando que funcione para esto) que excluya esos directorios. Aquí hay algunas cosas que he probado que no parecen funcionar.

encontrar . ! -ruta “/usr/local/conectar/” -tipo f -nombre “*.txt” -mtime -1

encontrar . -tipo f -ruta “/usr/local/conectar/” -prune -o -nombre “*.txt” -mtime -1

Ninguno de esos parece funcionar. También he intentado hacerlo en diferentes órdenes (como -escribir f primero, o podar primero en la línea, etc.). Pero leí que la ciruela pasa elimina la ruta de procedimiento. Esto parece que debería ser algo fácil de hacer. ¡Avísame si ves mi error! ¡Gracias de antemano!

Respuesta aceptada:

-path "/usr/local/connect/" coincidiría solo en una ruta de archivo que sea exactamente /usr/local/connect/ . Eso nunca coincidirá porque con find . , todas las rutas comenzarán con .

Así que querrías:

find / -path '/usr/local/connect/*' -type d -prune -o \
       -name '*.txt' -type f -mtime -1 -print

El -print también es importante Sin él, habría un implícito -print para archivos que coincidan con la expresión completa (por lo que ambas partes de -o ).

Tenga en cuenta que también puede usar -xdev para evitar cruzar cualquier límite del sistema de archivos.

Si desea ejecutarlo con find . cuando el directorio actual es /usr/local , eso tendría que ser:

cd /usr/local &&
  find . -path './connect/*' -type d -prune -o \
         -name '*.txt' -type f -mtime -1 -print

Linux
  1. Cómo encontrar archivos grandes de Linux con los comandos find y du

  2. Cómo copiar/mover archivos y directorios en Linux con los comandos “cp” y “mv”

  3. Buscar y reemplazar con sed en directorios y subdirectorios

  4. bash buscar directorios

  5. ¿Subir directorios con sftp?

Qué es Git Bash; Trabajar con comandos de Git Bash

Hoja de referencia de comandos de Linux:con ejemplos

Buscar comando en Linux (Buscar archivos y directorios)

Comandos de Nmap con ejemplos

Dos comandos para encontrar archivos y directorios en Debian 11 fácilmente

¿Encontrar directorios con todos los archivos dentro de más de X?