Tres opciones más.
Usar find
con -mindepth 1
y -delete
:
Niveles de profundidad mínima
No aplique ninguna prueba o acción en niveles inferiores a los niveles (un número entero no negativo).
−mindepth 1 significa procesar todos los archivos excepto los argumentos de la línea de comandos.
-Eliminar
Eliminar archivos; verdadero si la eliminación se realizó correctamente. Si la eliminación falla, se emite un mensaje de error. Si −delete falla, el estado de salida de find será distinto de cero (cuando finalmente salga). El uso de −delete activa automáticamente la opción −depth.
Pruebe cuidadosamente con la opción -depth antes de usar esta opción.
# optimal?
# -xdev don't follow links to other filesystems
find '/target/dir with spaces/' -xdev -mindepth 1 -delete
# Sergey's version
# -xdev don't follow links to other filesystems
# -depth process depth-first not breadth-first
find '/target/dir with spaces/' -xdev -depth -mindepth1 -exec rm -rf {} \;
2. Uso find
, pero con archivos, no directorios. Esto evita la necesidad de rm -rf
:
# delete all the files;
find '/target/dir with spaces/' -type f -exec rm {} \;
# then get all the dirs but parent
find '/target/dir with spaces/' -mindepth 1 -depth -type d -exec rmdir {} \;
# near-equivalent, slightly easier for new users to remember
find '/target/dir with spaces/' -type f -print0 | xargs -0 rm
find '/target/dir with spaces/' -mindepth 1 -depth -type d -print0 | xargs -0 rmdir
3. Continúe y elimine el directorio principal, pero vuelva a crearlo. Puede crear una función bash para hacer esto con un comando; Aquí hay una simple línea:
rm -rf '/target/dir with spaces' ; mkdir '/target/dir with spaces'