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.