Estoy tratando de eliminar todos los archivos y subdirectorios en un directorio. Solía rm -r
eliminar todos los archivos, pero quiero eliminar todos los archivos y subdirectorios, excluyendo el directorio superior en sí.
Por ejemplo, tengo un directorio superior como images
. Contiene los archivos header.png
, footer.png
y un subdirectorio.
Ahora quiero eliminar header.png
, footer.png
y el subdirectorio, pero no images
.
¿Cómo puedo hacer esto en Linux?
rm -Rf
de todos los archivos y directorios allí.Respuestas:
Si se llama a su directorio de nivel superior
images
, ejecuterm -r images/*
. Esto utiliza el operador de shell glob*
para ejecutarserm -r
en cada archivo o directorio dentroimages
.fuente
Para eliminar archivos ocultos, debe especificar:
Con proyectiles cuyos globos incluyen
.
y..
, esto conducirá a un error comopero eliminará los archivos ocultos.
Un enfoque sin mensaje de error es usar find / delete con mindepth. Esto es gnu-find.
Su hallazgo puede carecer del predicado
-mindepth
o-delete
, en cuyo caso, podría hacer:fuente
rm .*
no elimina.
o..
y no tiene por lo menos desde 1994 para las herramientas GNU y es probable que desde finales de los años 70 para UNIX . Es extremadamente improbable que encuentre un sistema donderm .*
atraviese el sistema de archivos hacia arriba fuera de un museo.Para eliminar todos los archivos y directorios (incluidos los ocultos ) en un directorio, puede intentar lo siguiente:
se usa
ls -Ab
para hacer coincidir todos los archivos / directoriosse usa
find
para hacer coincidir todos los archivos / directorioso, si su
find
no es compatible-delete
:elimine la carpeta, luego vuelva a crearla
en bash,
fuente
rm -rf *
no es seguro si no tiene conocimiento de los archivos en un directorio, porque un archivo que comienza con-
(guión) se interpretará como unrm
indicador ...rm -rf ./* ./.*
Para eliminar todos los archivos regulares de forma recursiva dentro de un directorio, este comando (suponiendo GNU o FreeBSD
find
) es lo suficientemente bueno:Eso deja todos los archivos no regulares como enlaces simbólicos (ya sea que apunten a archivos normales o no), directorios, quince, sockets, dispositivos ...
Ver también:
para eliminar archivos de cualquier tipo excepto el directorio .
fuente
Prueba esta versión:
fuente
Estoy usando el
find
comando aquí:Paso 1: busque todos los archivos y elimínelos:
Ejemplo:
Paso 2: busque todos los subdirectorios y elimínelos:
fuente
find /path/to/directory/ -type d
incluye.
lo que eliminará el directorio en sí. También debe usar el-mindepth
interruptor como han dicho otros.La pregunta era vaciar un directorio = eliminar el contenido de un directorio, incluidos los archivos ocultos, pero no el directorio en sí. El comando find con -mindepth 1 es en realidad la forma correcta de hacerlo, pero para evitar mensajes de error debe unirse con -maxdepth 1:
fuente
La sintaxis de rm es:
Por lo tanto, debe indicar la ruta apropiada explícitamente, por ejemplo
fuente
Puede eliminar el directorio con el siguiente comando:
Se eliminará todo el directorio después de 3 / *.
Ejemplo sudo rm -r Descargas / canción / *
Se eliminarán todos los archivos que estén dentro
Downloads/song
.fuente
Esto funciona perfectamente para mí, probé varias variaciones que funcionaron cada vez.
Desde el directorio que contiene el directorio de imágenes.
antes de:
después:
fuente
mkdir images/.somedir
;touch images/.somefile
)Para eliminar todos los archivos y subdirectorios en el directorio actual, incluidos los ocultos, sin mensaje de error :
O, desde el directorio padre:
Desde https://serverfault.com/a/47940/269538 .
fuente
Otra opción:
fuente: https://askubuntu.com/a/552834/56648
fuente
Elimine la carpeta "prueba" y todos los archivos dentro:
Elimine todos los archivos dentro pero mantenga la carpeta "prueba":
fuente
cd en la carpeta y luego ejecute el siguiente comando:
fuente