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

Resuelto asked hace 14 años • 4 respuestas

Desde una ventana de terminal:

Cuando uso el rmcomando, solo puedo 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 manera de eliminar todos los archivos y carpetas sin tener que escribir todos los comandos extenuantes?

Si hay alguna diferencia, estoy usando el shell Mac Bash desde una terminal, no Microsoft DOS o Linux.

 avatar Apr 15 '10 08:04
Aceptado
rm -rf some_dir

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

¡Ten cuidado!

Jim Lewis avatar Apr 15 '2010 01:04 Jim Lewis
rm -rf *

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

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

Prine avatar Apr 15 '2010 01:04 Prine

Sí hay. La -ropción indica rmque sea recursiva y elimine toda la jerarquía de archivos basada en sus argumentos; en otras palabras, si se le proporciona un directorio, eliminará todo su contenido y luego realizará lo que efectivamente es un archivo rmdir.

Las otras dos opciones que debes conocer son -iy -f. -isignifica interactivo ; le avisará rmantes de eliminar todos y cada uno de los archivos. -fsignifica fuerza ; continúa y borra todo sin preguntar. -ies más seguro, pero -fes más rápido; Úselo solo si está absolutamente seguro de que está eliminando lo correcto. Puede especificarlos con -ro no; es un escenario independiente.

Y como siempre, puedes combinar los modificadores: rm -r -iis just rm -riy rm -r -fis rm -rf.

También tenga en cuenta que lo que está aprendiendo se aplica a bashtodos los sistemas operativos Unix: OS X, Linux, FreeBSD, etc. De hecho, rmla sintaxis de ' es la misma en casi todos los shells de todos los sistemas operativos Unix. OS X, bajo el capó, es en realidad un sistema BSD Unix.

Antal Spector-Zabusky avatar Apr 15 '2010 01:04 Antal Spector-Zabusky

Estaba buscando una manera de eliminar todos los archivos de un directorio, excepto algunos directorios y archivos que quería conservar. Ideé una manera de hacerlo usando buscar :

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.

msantoro12 avatar Apr 25 '2014 18:04 msantoro12