file - una - Cómo eliminar archivos y directorios rápidamente a través de terminal(bash shell)
mover todos los archivos de un directorio a otro en linux (4)
Desde la ventana de la terminal:
Cuando uso el comando rm
solo puedo eliminar archivos.
Cuando uso el comando rmdir
, solo se eliminan 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 tener que escribir todo el comando?
Si hace una diferencia, estoy usando el shell bash de mac de la terminal, no Microsoft DOS o linux.
Así que estaba buscando por todas partes una forma de eliminar todos los archivos de un directorio, excepto algunos directorios y archivos que quería conservar. 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 {} /;
Esencialmente, utiliza expresiones regulares para seleccionar los directorios para excluir de los resultados y luego elimina los archivos restantes. Solo quería ponerlo aquí en caso de que alguien más lo necesitara.
Sí hay. La opción -r
le dice a rm
que sea r ursiva y elimine toda la jerarquía de archivos enraizada en sus argumentos; en otras palabras, si se le da un directorio, eliminará todo su contenido y luego ejecutará lo que efectivamente es un rmdir
.
Las otras dos opciones que debes saber son -i
y -f
. -i
significa inactivo; hace que rm
te pregunte antes de eliminar todos y cada uno de los archivos. -f
representa la fuente; Sigue adelante y borra todo sin preguntar. -i
es más seguro, pero -f
es más rápido; Úsalo solo si estás absolutamente seguro de que estás eliminando lo correcto. Puede especificar estos con -r
o no; Es un escenario independiente.
Y como de costumbre, puede combinar los interruptores: rm -r -i
es simplemente rm -ri
, y rm -r -f
es rm -rf
.
También tenga en cuenta que lo que está aprendiendo se aplica a bash
en todos los sistemas operativos Unix: OS X, Linux, FreeBSD, etc. De hecho, la sintaxis de rm
es la misma en casi todos los shell de cada sistema operativo Unix. OS X, bajo el capó, es realmente un sistema BSD Unix.
rm -rf *
Quitaría todo (carpetas y archivos) en el directorio actual.
¡Pero ten cuidado! Ejecute este comando solo si está absolutamente seguro de que está en el directorio correcto.
rm -rf some_dir
-r "recursivo" -f "fuerza" (suprimir mensajes de confirmación)
¡Ten cuidado!