Estoy tratando de eliminar todos los archivos y subdirectorios en un directorio. Solía rm -reliminar 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.pngy un subdirectorio.
Ahora quiero eliminar header.png, footer.pngy el subdirectorio, pero no images.
¿Cómo puedo hacer esto en Linux?

rm -Rfde 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 -ren 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
-mindeptho-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 -Abpara hacer coincidir todos los archivos / directoriosse usa
findpara hacer coincidir todos los archivos / directorioso, si su
findno 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 unrmindicador ...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
findcomando 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 dincluye.lo que eliminará el directorio en sí. También debe usar el-mindepthinterruptor 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