¿Cómo eliminar un directorio no vacío en la Terminal?

630

¿Cómo elimino el siguiente directorio?

Escribí:

rmdir lampp

Este error aparece:

rmdir: failed to remove `lampp': Directory not empty

¿Hay un comando para eliminar todos los archivos en el directorio y eliminar la carpeta del directorio?

naveen
fuente
1
No puedo eliminar un directorio como "Nueva carpeta" utilizando todos los comandos detallados anteriormente. Es de doble redacción. Pero quiero eliminar ese directorio. Cualquier sugerencia será bienvenida. T.Divakara, Bangalore, India
Es el espacio en blanco en el nombre del archivo, intente usar 'comillas'> rmdir 'Nueva carpeta' <luego la carpeta se desactiva, o use caracteres de escape para caracteres no visibles.
Ken Mollerup
2
Solo hacer rm -r lampplo hará.
John Strood

Respuestas:

877

Use el siguiente comando:

rm -rf lampp

Elimina todos los archivos y carpetas contenidos en el lamppdirectorio.

En caso de que el usuario no tenga permiso para eliminar la carpeta:

Agregue sudoal comienzo del comando:

sudo rm -rf folderName

De lo contrario, sin sudousted se devolverá el permiso denegado. Y es una buena práctica intentar no usar -fmientras se elimina un directorio:

sudo rm -r folderName

Nota: esto supone que ya está en el mismo nivel de la carpeta que desea eliminar en la terminal, si no:

sudo rm -r /path/to/folderName

Para su información: se puede utilizar letras -f, -r, -v:

  • -f = para ignorar archivos inexistentes, nunca preguntar
  • -r = eliminar directorios y sus contenidos de forma recursiva
  • -v = para explicar lo que se está haciendo
Shantanu Banerjee
fuente
69
En mi humilde opinión, es una buena práctica nunca agregar la "f" en el primer intento. Su propósito es ignorar ciertas indicaciones de advertencia que pueden ser importantes, especialmente si lo ha hecho accidentalmente en / desde el directorio incorrecto. En mi opinión, es bueno intentarlo sin la "f" primero, luego solo si te encuentras con muchos avisos de advertencia y estás seguro de que está bien ignorarlos, Ctrl + C y repita el comando con el " F".
thomasrutter
@thomasrutter ... De acuerdo. El propietario de un archivo "xxx": root y group: root puede SER eliminado con el modificador -f ; y sin sudo . Este es el mensaje sin -f : " rm: eliminar el archivo regular protegido contra escritura '/home/william/.cache/netbeans/v08.01/tmp/xxx'? _". _Tejer suavemente.
será el
95
rm -R lampp

Sin embargo, debe tener cuidado con un comando recursivo como este, ya que es fácil eliminar accidentalmente mucho más de lo que pretendía.

Es una buena idea verificar siempre en qué directorio se encuentra, y si escribió el comando correctamente, antes de presionar Entrar.

Versión más segura

rm -R -i lampp

Agregar lo -ihace un poco más seguro, ya que le indicará cada eliminación. Sin embargo, si está eliminando muchos archivos, esto no será muy práctico. Aún así, puedes probar esto primero.

Nota sobre la -f opción:

Muchas personas sugieren usar -f(combinándolo en -Rfo -rf), alegando que se deshace de los molestos mensajes. Sin embargo, en casos normales no lo necesita, y su uso suprime algunos problemas que es probable que no desee conocer. Cuando lo use, no se le advertirá si sus argumentos proporcionan un directorio o archivos no existentes: rm simplemente no eliminará nada en silencio. Como regla general, intente primero sin -f: si hay problemas con sus argumentos, lo notará. Si comienza a recibir demasiadas indicaciones sobre archivos sin acceso de escritura, puede intentarlo con-f. Alternativamente, ejecute el comando desde un usuario (o el superusuario que usa sudo) que tiene permisos completos para los archivos y directorios que está eliminando para evitar estas indicaciones en primer lugar.

thomasrutter
fuente
44
Nota: también -rse puede usar minúscula y tiene el mismo efecto aquí. Solo tiendo a usar mayúsculas -Rporque es coherente con otros comandos que uso como grepy chmod, algunos de los cuales solo admiten la forma en mayúsculas.
thomasrutter
Este funcionó para mí usando adb (puente de depuración de Android) en Android. Estaba intentando rm -rf pero no funcionó. Tuve que usar rm -R. Gracias.
raddevus
Esta es una buena solución, especialmente si no tiene experiencia con el uso del terminal Bash. El comando se puede acortar a rm -ir FOLDER.
AlainD
24

Hay muchas formas de eliminar un directorio a través del modo CLI. Depende de cómo te sientas cómodo.

rm -rvf /path/to/directory  
  • -r = eliminar directorios y sus contenidos de forma recursiva
  • -v = explicar lo que se está haciendo
  • -f = ignorar archivos inexistentes, nunca solicitar

Si es nuevo en Linux, use las páginas de comando man ( man rm) para obtener más opciones y más precisión.

papseddy
fuente
-2

Tuve algunos problemas con eso hoy, pero lo superé con sudo.

Advertencia: asegúrese de que desea eliminar todo antes de utilizar el comando a continuación.

$ sudo rm -R [Directory name]

Lo hice con éxito hoy y eliminé muchos directorios no vacíos que confirmé que no quería / necesitaba.

Estoy usando 14.04 LTS

Thomas
fuente
44
"SUDO" no es un comando - "sudo" sí lo es. Sin embargo, no utiliza sudo para eliminar un directorio no vacío, lo utiliza para eliminar un archivo que no le pertenece. Hacer esto de forma rutinaria es peligroso y no muy inteligente, ya que no debe eliminar ciegamente archivos que no le pertenecen.
Marty Fried
-3

Por cierto, personalmente quería eliminar un directorio que contenía un archivo / s protegido contra escritura (.git y subdirectorios) y finalmente me di cuenta de que también necesitaba convertirme en un súper usuario para eliminar estos archivos con éxito. Aquí esta lo que hice:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/
Harvey Williams
fuente
44
No creo que necesites sudo suaquí. Solo prefija el rmcomando con sudo. Por seguridad, es una buena práctica (según los defensores de sudo) no permanecer en un indicador de raíz cuando no sea necesario.
thomasrutter
2
Además, esté muy muy muy seguro de en qué directorio se encuentra si lo hace sudo rm -r.
Tony Martin
Puede hacer que el comando sea relativo a la raíz ( /directory_name) para que no haya dudas sobre qué directorio está eliminando.
Yaakov Ainspan