Cómo eliminar archivos y directorios de forma rápida a través del terminal (bash) [cerrada]

StackOverflow https://stackoverflow.com/questions/2642147

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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top