Cómo eliminar archivos y directorios de forma rápida a través del terminal (bash) [cerrada]
Pregunta
Desde la ventana de terminal:
Cuando uso el comando rm
sólo puede eliminar archivos.
Cuando utilizo el comando rmdir
que sólo elimina las carpetas vacías.
Si tengo un directorio anidado con archivos y carpetas dentro de carpetas con archivos y así sucesivamente, ¿hay alguna manera de eliminar todos los archivos y carpetas sin toda la tipificación de comandos extenuante?
Si se hace una diferencia, estoy usando la cáscara mac fiesta de la terminal, no Microsoft DOS o Linux.
Solución
rm -rf some_dir
r "recursivo" -f "fuerza" (mensajes de confirmación suprimir)
Tenga cuidado!
Otros consejos
rm -rf *
eliminaría todo (carpetas y archivos) en el directorio actual.
Pero tenga cuidado! Sólo ejecutar este comando si está absolutamente seguro, que se encuentra en el directorio correcto.
Sí, la hay. La opción -r
dice rm
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, se eliminará todo su contenido y luego realizar lo que es efectivamente un rmdir
.
Las otras dos opciones que usted debe saber son -i
y -f
. -i
significa i nteractive; hace rm
le pregunte antes de borrar cada archivo. -f
significa f orce; sigue adelante y elimina todo sin preguntar. -i
es más seguro, pero -f
es más rápido; sólo lo uso si estás absolutamente seguro que está eliminando lo correcto. Puede especificar estos con -r
o no; se trata de una configuración independiente.
Y como de costumbre, se pueden combinar los interruptores:. rm -r -i
es sólo rm -ri
y rm -r -f
es rm -rf
También tenga en cuenta que lo que está aprendiendo se aplica a bash
en cada sistema operativo Unix: OS X, Linux, FreeBSD, etc. De hecho, la sintaxis de rm
es el mismo en más o menos todos los depósitos en cada sistema operativo Unix. OS X, bajo el capó, es realmente un sistema Unix BSD.
Así que estaba buscando por todos lados una forma de eliminar todos los archivos en un directorio a excepción de algunos directorios y archivos, que quería mantener a su alrededor. Después de mucho buscar he ideado una manera de hacerlo utilizando hallazgo.
find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;
En esencia se utiliza expresiones regulares para seleccionar los directorios a excluir de los resultados a continuación, elimina los archivos restantes. Sólo quería ponerlo aquí en caso de que alguien más lo necesitaba.