2011-05-10 16 views
29

Tengo cientos de directorios y archivos en un directorio.Cómo eliminar solo los directorios y dejar los archivos intactos

¿Cuál es la mejor manera de eliminar sólo directorios (no importa si los directorios tienen nada en ella o no, simplemente eliminarlos todos)

Actualmente uso ls -1 -d */, y grabarlos en un archivo, y hacer sed, y luego ejecutarlo. Es bastante largo. Estoy buscando una mejor manera de eliminar sólo los directorios

Respuesta

-13

En una línea:

rm -R `ls -1 -d */` 

(apóstrofes)

+5

No pipe la salida de 'ls'; ** especialmente ** no a 'rm -r'. No funciona cuando los nombres de ruta contienen espacios. –

+1

No consideré el problema de espacio. Lo recordaré. –

+0

Esto no debe aceptarse como la mejor respuesta – Asim

10

En primer lugar, ejecute:

find /path -d -type d 

para asegurarse de que la salida se ve sano, entonces:

find /path -d -type d -exec rm -rf '{}' \; 

-type d sólo busca directorios, entonces -d se asegura de poner directorios secundarios antes que el padre.

+0

El primer comando ni siquiera funciona para mí. > buscar. -d -type -d encontrar: advertencia: la opción -d está en desuso; utilice -depth en su lugar, porque este último es una función que cumple con POSIX. encontrar: argumento inválido -d a -tipo – Anthony

+1

@Anthony tiene un guión adicional allí. Debe ser 'find/path -d -type d' – csvan

+1

@csvan lol. Guau. simplemente guau. – Anthony

111

Esto es mucho más simple y funciona para mí:

rm -r */ 
+4

para omitir preguntas de y/n: rm -rf */ –

+1

Tenga en cuenta la expansión al usar esto en una secuencia de comandos, ya que los asteriscos no se expandirán entre comillas. Como es, debería funcionar bien. http://unix.stackexchange.com/questions/156534/bash-script-error-with-strings-with-paths-that-have-spaces-and-wildcards –

12

find . -maxdepth 1 -mindepth 1 -type d

continuación

find . -maxdepth 1 -mindepth 1 -type d -exec rm -rf '{}' \;

+1

Aunque este código puede responder a la pregunta, proporcionando contexto adicional con respecto a _why_ y/o _how_ responde la pregunta mejoraría significativamente su valor a largo plazo . Por favor [edite] su respuesta para agregar alguna explicación. –

Cuestiones relacionadas