Cómo eliminar archivos y directorios rápidamente a través de la terminal (bash shell) [cerrado]


331

Desde la ventana de terminal:

Cuando uso el rmcomando solo puede eliminar archivos.
Cuando uso el rmdircomando, solo elimina las carpetas vacías.

Si tengo un directorio anidado con archivos y carpetas dentro de carpetas con archivos, etc., ¿hay alguna forma de eliminar todos los archivos y carpetas sin todos los tipos de comandos extenuantes?

Si hace la diferencia, estoy usando el shell mac bash de la terminal, no Microsoft DOS o Linux.


En caso de que desee restaurar los archivos en el futuro, no use "rm" para tales casos. Use "rm-trash": github.com/nateshmbhat/rm-trash
— Natesh bhat

Respuestas:


761
rm -rf some_dir

-r "recursivo" -f "fuerza" (suprimir mensajes de confirmación)

¡Ten cuidado!


27
+1 y me alegro de que hayas agregado el mensaje "¡Ten cuidado!" parte ... definitivamente un comando "Sawzall" que puede convertir rápidamente un buen día en uno malo ... si se maneja descuidadamente.
— itsmatt

55
como no hagas "# rm -rf /" te arrepentirás de eso:
— DarthVader

1
@itsmatt: Sabes lo que dicen ... ¡dale a Sawzall a alguien, y de repente cada problema parece horas de diversión!
— Jim Lewis

164
En una Mac? Haga esto en su lugar: brew install trashluego trash -rf some_dirEsto moverá el directorio no deseado a su cubo de basura en lugar de simplemente desvanecer el estilo Prestige en el éter. ( fuente )
— zakdances

44
¡El enfoque de "basura" es genial!
— anopres

59
rm -rf *

Eliminaría todo (carpetas y archivos) en el directorio actual.

¡Pero ten cuidado! Solo ejecute este comando si está absolutamente seguro de que está en el directorio correcto.


17
rm -rf es un comando muy arriesgado, siempre debe tener cuidado y especificar la carpeta que se eliminará.
— eomeroff

8
¿Qué te parece correr ls -R *primero para ver qué eliminará?rm -rf *
— Hammad Khan

Esto funciona bien para mí, gracias.
— Monica Hübner

14

Sí hay. La -ropción le dice rma ser r ecursive, y quitar toda la jerarquía de ficheros raíz en sus argumentos; en otras palabras, si se le da un directorio, eliminará todo su contenido y luego realizará lo que efectivamente es un rmdir.

Las otras dos opciones que debe saber son -iy -f. -irepresenta i nteractive; hace que rmle avise antes de borrar cada archivo. -fsignifica f orce; continúa y elimina todo sin preguntar. -ies más seguro, pero -fes más rápido; solo úselo si está absolutamente seguro de que está eliminando lo correcto. Puede especificar esto con -ro no; Es un entorno independiente.

Y, como de costumbre, puede combinar interruptores: rm -r -ies justo rm -riy rm -r -fes rm -rf.

También tenga en cuenta que lo que está aprendiendo se aplica a bashen cada sistema operativo Unix: OS X, Linux, FreeBSD, etc. De hecho, rmla sintaxis 's es la misma en casi todos los depósitos en cada sistema operativo Unix. OS X, bajo el capó, es realmente un sistema BSD Unix.


1
Aunque todas las opciones mencionadas anteriormente son estándar entre todos los sabores de Unix enumerados, también hay algunas diferencias. Por ejemplo, OS X (pero no Linux) tiene "rm -d", lo que elimina archivos o directorios vacíos. Aún así, +1 para el punto de que OS X es BSD internamente.
— David Gelhar

Verdadero: el subconjunto POSIX está (más o menos) garantizado para funcionar de manera consistente en Unixen, pero cualquier cosa fuera de eso puede o no.
— Antal Spector-Zabusky

2

Así que estaba buscando una forma de eliminar todos los archivos en un directorio, excepto algunos directorios y archivos, que quería mantener. Después de mucho buscar, ideé una forma de hacerlo usando find.

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

Básicamente, utiliza expresiones regulares para seleccionar los directorios que se excluirán de los resultados y luego elimina los archivos restantes. Solo quería publicarlo aquí en caso de que alguien más lo necesitara.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.