Comunidad Gambas-es
Comando Find. Excluir un directorio - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Linux (https://gambas-es.org/forum-9.html)
+--- Foro: Mundo Linux (https://gambas-es.org/forum-10.html)
+--- Tema: Comando Find. Excluir un directorio (/thread-982.html)



Comando Find. Excluir un directorio - Shell - 29-07-2022

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