varios una todos subdirectorios recursivo por otro mover los listar fecha eliminar directorios directorio comando carpeta buscar borrar archivos file terminal folder rm rmdir

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!