Sé que esto eliminará todo en un subdirectorio y debajo de él:
rm -rf <subdir-name>
Pero, ¿cómo se elimina todo en el directorio actual, así como todos los subdirectorios debajo de él y el contenido de todos esos subdirectorios?
Sé que esto eliminará todo en un subdirectorio y debajo de él:
rm -rf <subdir-name>
Pero, ¿cómo se elimina todo en el directorio actual, así como todos los subdirectorios debajo de él y el contenido de todos esos subdirectorios?
Respuestas:
Practica la informática segura. Simplemente suba un nivel en la jerarquía y no use una expresión comodín:
Los dos guiones
--
indicanrm
que<dir-to-remove>
no es una opción de línea de comandos, incluso cuando comienza con un guión.fuente
rm ./
, podría escribir accidentalmente, lorm . /
que podría ser un desastre.Eliminará todos los archivos / directorios debajo del actual.
Si desea hacer lo mismo con otro directorio cuyo nombre tiene, puede simplemente nombrarlo
Si desea eliminar no solo los subdirectorios y archivos del mismo, sino también el directorio en sí, omita
-mindepth 1
. Hágalo sin el-delete
para obtener una lista de las cosas que se eliminarán.fuente
-mindepth 1
si está especificando un directorio (find <name-of-directory> -mindepth 1 -delete
). De lo contrario, Johannes tiene razón, no eliminará el directorio de trabajo actual (cuando se usefind -delete
).find -mindepth 1 -delete
pero tengoillegal option -- m
pero funcionó muy bien cuando me quité la opción mindepthfind . -delete
Lo que siempre hago es escribir
y luego presione ESC- * , y bash expandirá el * a una lista explícita de archivos y directorios en el directorio de trabajo actual.
Los beneficios son:
De hecho, me gusta tanto que lo he convertido en el comportamiento predeterminado para TAB con esta línea en .bashrc:
fuente
--
esta respuesta? Este enfoque es impresionante en general, debo decir.Utilizar
Actualización:
.
significa directorio actual, pero no podemos usarlo. El comando parece tener comprobaciones explícitas para.
y..
. Utilice el comodín globbing en su lugar. Pero esto puede resultar arriesgado.Una versión más segura de la OMI es usar:
(esto le solicita confirmación antes de eliminar cada archivo / directorio).
fuente
Es correcto que
rm –rf .
eliminará todo en el actual directamente, incluidos los subdirectorios y su contenido. El único punto (.
) significa el directorio actual. tenga cuidado de no hacerlorm -rf ..
ya que el punto doble (..
) significa el directorio anterior.Dicho esto, si usted es como yo y tiene múltiples ventanas de terminal abiertas al mismo tiempo, será mejor que esté seguro y use
rm -ir .
Veamos los argumentos del comando para entender por qué.Primero, si observa la
rm
página de comando man (man rm
en la mayoría de Unix), nota que–r
significa "eliminar el contenido de los directorios de forma recursiva". Por lo tanto, hacerlorm -r .
solo eliminaría todo en el directorio actual y todo lo que está debajo.En
rm –rf .
el agregado -f significa "ignorar archivos inexistentes, nunca preguntar". Ese comando elimina todos los archivos y directorios en el directorio actual y nunca le pide que confirme que realmente desea hacerlo.-f
es particularmente peligroso si ejecuta el comando con un usuario con privilegios, ya que podría eliminar el contenido de cualquier directorio sin tener la oportunidad de asegurarse de que eso sea realmente lo que desea.Por otro lado, en
rm -ri .
el-i
que reemplaza los-f
medios "preguntar antes de cualquier eliminación". Esto significa que tendrás la oportunidad de decir "¡oups! Eso no es lo que quiero" antes de que rm borre felizmente todos tus archivos.En mis primeros días de administrador de sistemas, hice un
rm -rf /
en un sistema mientras estaba conectado con todos los privilegios (root). El resultado fue que pasaron dos días restaurando el sistema desde las copias de seguridad. Es por eso que ahora empleorm -ri
ahora.fuente
Qué tal si:
fuente
¡No lo hagas! ¡Es peligroso! ¡ASEGÚRESE DE ESTAR EN EL DIRECTORIO CORRECTO!
fuente
hacer seguro de que estás en el directorio correcto
fuente
Esta solución general y segura más simple es probablemente:
fuente
Creo que esta respuesta es mejor:
/unix/12593/how-to-remove-all-the-files-in-a-directory
básicamente subes un nivel y luego dices eliminar todo dentro del directorio X. De esta manera, todavía está especificando qué carpeta debe eliminar su contenido, lo cual es más seguro que simplemente decir 'eliminar todo aquí', mientras se conserva la carpeta original (que a veces desea porque no está permitido o simplemente no desea para modificar los permisos existentes de la carpeta)
fuente