Digamos que tengo un árbol de directorios como este:
FOLDER:
file1
file2
file3
Subfolder1:
file1
file2
Subfolder2:
file1
file2
Si lo usara rm -r FOLDER/*
, todo en FOLDER se eliminaría, incluidos los subdirectorios. ¿Cómo puedo eliminar todos los archivos en FOLDER y en sus subdirectorios sin eliminar directorios reales?
fuente
Si su versión de
find
no es compatible-delete
, puede usar lo siguiente para eliminar cada archivo en el directorio actual y debajo.fuente
-exec rm {} +
sería más rápido, especialmente si hay muchos archivos.find . ! -type d -exec rm {} +
elimina enlaces sym.find
no es compatible-delete
, probablemente tampoco-exec ... {} +
sea compatible . La forma recomendada de lidiar con eso esfind ... -print0 | xargs -r0 rm
(si se esperan muchas coincidencias potenciales).-exec ... {} +
es POSIX, pero-delete
no lo es. (Tampoco lo es-print0
, por cierto.)find
implementaciones que no son POSIX que son compatibles-print0
pero no-exec ... {} +
(aunque no recuerdo-delete
). Uno estaba en OS X, el otro en Solaris (hace unos años en un sistema actualizado muy conservador). También puedes sustituir-print0
con-printf '%p\0'
. De todos modos, esto es Ask Ubuntu y no Unix & Linux y Ubuntu usa GNU find desde siempre.