todos subdirectorios sintaxis para otro mover manejo los listar ejemplos directorios directorio crear comandos carpeta basicos archivos archivo unix find rm

subdirectorios - Unix elimina todas las carpetas en un directorio con un nombre específico



listar directorios y subdirectorios linux (3)

Hola, tengo muchas carpetas con el nombre "@eaDir" en uno de mis discos y me gustaría buscarlas, encontrarlas y eliminarlas y sus contenidos.

Sé que esta es probablemente una combinación del comando find y rm, pero no puedo entenderlo. ¿Alguien puede ayudar?


Prueba esto:

find . -type d -name ''@eaDir'' -print0 | xargs -rt0 rm -rv

Aquí está lo mismo pero usando opciones largas explícitas para xargs :

find . -type d -name ''@eaDir'' -print0 | xargs --no-run-if-empty --verbose --null rm -rv

(Usar opciones largas siempre es una buena idea si está escribiendo scripts que necesitarán ser mantenidos / revisados ​​por otras personas)

Pero antes que nada:

man find man xargs


Vaya a la carpeta o directorio raíz y ejecute el siguiente comando:

find . -path ''*/@eaDir/*'' -delete -print && find . -path ''*/@eaDir'' -delete -print

Esto debería funcionar para ti.


find /path/to/the/disk -type d -name "@eaDir" -delete

Tenga en cuenta que el orden aquí es fundamental: citando la página de manual,

Advertencias: no olvide que la línea de comando de búsqueda se evalúa como una expresión, por lo que poner -delete primero hará que find intente eliminar todo debajo de los puntos de inicio que haya especificado.

Entonces, como siempre , primero intente su comando de find con -print , luego, cuando verifique que todo funciona bien, reemplácelo por -delete . Tenga en cuenta que -delete implica -depth , entonces, para realizar pruebas significativas con -print , debe especificarlo explícitamente en la expresión:

Al probar una línea de comandos de búsqueda que luego intenta utilizar con -delete, debe especificar explícitamente -depth para evitar sorpresas posteriores.