Cómo eliminar archivos y directorios rápidamente a través de la terminal (bash shell) [cerrado]
Desde una ventana de terminal:
Cuando uso el rm
comando, solo puedo eliminar archivos.
Cuando uso el rmdir
comando, 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.
rm -rf some_dir
-r "recursivo" -f "forzar" (suprimir mensajes de confirmación)
¡Ten cuidado!
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.
Sí hay. La -r
opción indica rm
que 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 -i
y -f
. -i
significa interactivo ; le avisará rm
antes de eliminar todos y cada uno de los archivos. -f
significa fuerza ; continúa y borra todo sin preguntar. -i
es más seguro, pero -f
es más rápido; Úselo solo si está absolutamente seguro de que está eliminando lo correcto. Puede especificarlos con -r
o no; es un escenario independiente.
Y como siempre, puedes combinar los modificadores: rm -r -i
is just rm -ri
y rm -r -f
is rm -rf
.
También tenga en cuenta que lo que está aprendiendo se aplica a bash
todos los sistemas operativos Unix: OS X, Linux, FreeBSD, etc. De hecho, rm
la 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.
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.