¿Cómo elimino un directorio y todo su contenido?

142

En bash todo lo que sé es que

rmdir directoryname

eliminará el directorio pero solo si está vacío. ¿Hay alguna manera de forzar la eliminación de subdirectorios?

Piperchester
fuente

Respuestas:

217

El siguiente comando lo hará por usted. Sin embargo, ten cuidado.

rm -rf directoryname
Phillip Nordwall
fuente
52
"-f" es "--force" que anula algunas comprobaciones de cordura y avisos. Un comando más seguro para comenzar sería rm -r directoryname.
Jim Paris
Por alguna razón, recibo un rm: invalid option -- rerror al intentar eliminar un directorio con rm -r <directoryname>.
Sunspawn
@Sunspawn Compruebe esta pregunta relacionada para ver si ese es el caso.
Marc.2377
1
@JimParis Creo que la palabra "más seguro" es relativa. Supongamos que está escribiendo un script para ejecutar en una computadora remota. Ese script tiene un comando que se supone que elimina un directorio. Aquí, sería "más seguro" usar rm -rf directorynameporque no querrías que tu script pause la ejecución, porque está esperando la entrada del usuario. Por supuesto, debe asegurarse de que eliminar el directorio no haría daño.
John Red
7

si le rm -rf directorynamefalla, intente usar rm -R -f directoryname, o rm --recursive -f directoryname.

Si no tiene suerte con esto, debería considerar reinstalar rm o cambiar shells.

saterHater
fuente
Estas fueron las opciones disponibles en mi página de manual de rm. Lo busqué escribiendo man rmpara ver mis opciones de eliminación recursiva y las opciones de forzar .
saterHater
¿Tu rmpágina de manual aparece -r? ¿Qué hace? (Pruébelo en un directorio que cree solo con fines de prueba, con solo archivos ficticios (y quizás subdirectorios) en él). ¿Qué sistema operativo está utilizando?
G-Man
PD Si rm -rno funciona, eso sería un problema del sistema operativo, no un problema de shell. (Estrictamente hablando, sería un problema con la versión de la rmque está utilizando, por lo que podría abordarlo instalando una versión diferente rmo buscando en su sistema para ver si ya tiene una versión diferente rmen otro directorio que no sea /bin.)
G-Man
Ah bien. Olvidé mencionar que estoy en Ubuntu 14.04 Cuando ejecuté man rmen mi terminal, me dio un archivo de texto con el lessvisor de texto. Me desplacé y encontré una entrada sangrada con un todo que tenía las opciones -R y - recursivas junto con la opción -r , lo que significa que todos esos argumentos son idénticos.
saterHater
1
editar: ¿lo has intentadosudo rm -r directoryName ? Las reglas no escritas de los comandos básicos es que -rpermitirán que un programa se ejecute de forma recursiva en cada archivo de su sistema de archivos (¡comenzando donde elija!) Y que -f hará cosas con fuerza, incluso si es peligroso . 'cd', 'mv', 'ls' en su mayoría ejerce en este principio verdadero. ls -r /va a ser un duzie y cp -rf / /dev/nulldestruirá todo en tu sistema de archivos. <- ¡Nunca ejecutes ese comando!
saterHater