Shell   29-07-2022, 11:21
#1
Buenas!.

Tengo un árbol de directorios tal como este:
 
Cita:.
├── directorio1
│   └── archivo_dir1
├── directorio2
│   └── archivo_dir2
└── directorio3
    └── archivo_dir3

Y quiero evitar que el comando Find me muestre el contenido del directorio2. Imaginar que fuera mucho más grande.
Es necesario usar la opción "-prune" y "-o"

Código:
find . -path ./directorio2 -prune -o -type f

La salida fue:
 
Cita: 
./directorio2
./directorio1/archivo_dir1
./directorio3/archivo_dir3

Podemos incluso excluir una lista de directorios. Ejemplo, no quiero mostrar los archivos contenidos en el directorio2 y el directorio3:

Código:
find .  \( -path ./directorio2 -o -path ./directorio3 \) -prune -o -type f

Ahora imaginar que estamos en el directorio principal del sistema y queremos hacer una búsqueda para que nos muestre los archivos creados, modificados de hoy
"pero" que nos evite ver todo lo que cuelga del directorio "media"

Código:
find . -path ./media -prune -o -type f -newermt $(date -I)

Probablemente tengamos que ejecutarlo como root.

Lo cierto es que en /media tengo una partición para almacenar cosas de windows y es que salían todas por la fecha de hoy (los permisos de windows),
si no usaba -prune -o

Hay otra opción pero no me funcionó como debiese, es usar "-not -path".

Creo que el orden de la instrucción última que os he mostrados es muy importante en la forma de como se escribe, podría no funcionar si no se
hace en un orden concreto.

Saludos
Última modificación: 29-07-2022, 11:55 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.