Cómo borrar el contenido de un directorio en Centos

9

Necesito eliminar todo el contenido de una carpeta en CentOS pero no la carpeta en sí.

Por ejemplo: tengo una carpeta llamada "MI CARPETA" que contiene las subcarpetas FOLD_1, FOLD_2, FOLD_3, FOLD_4 ... etc., y algunos archivos. Necesito eliminar todas estas carpetas y archivos, pero no la carpeta del contenedor MYFOLDER. Necesito este directorio para dirigir los resultados de un proceso anterior.

Intenté con el rm -rf comando, pero esto también elimina la carpeta del contenedor.

verofairy
fuente

Respuestas:

11

Eliminar el contenido de la carpeta en su lugar.

rm -r MYFOLDER/*
Ignacio Vazquez-Abrams
fuente
1
Tenga en cuenta que esto no oculta los archivos / directorios dentro de MYFOLDER
tylerl
1
@tylerl: Lo hace si configuras shopt -s dotglobprimero.
jgoldschrafe
Esto requiere que apruebe manualmente y / n descendente en cada subdirectorio, lo cual es una pérdida de tiempo completa. El comando correcto manejaría todo eso automáticamente para que no te quedes atascado con 50 mensajes.
CodeMed
rm -R /path/to/myfolder/*es la sintaxis correcta para evitar solicitudes excesivas para aprobar la eliminación de cada archivo y subcarpeta. Tenga en cuenta la capital R.
CodeMed
5

Puedes usar:

rm -r MYFOLDER/{.[^.],.??*}

Esto elimina también los archivos y carpetas ocultos. Si tiene demasiados archivos en el directorio MYFOLDER, debe ejecutar en su lugar:

ls MYFOLDER/{.[^.],.??*}|xargs rm -r
Mircea Vutcovici
fuente
Tengo más de 500k archivos dentro de mi meta/directorio, por lo que quería probar la alternativa xargs, sin embargo, recibo estos mensajes de error: ls: cannot access meta/.[^.]: No such file or directory ls: cannot access meta/.??*: No such file or directory rm: missing operand
Andres SK
1
Asegúrate de estar usando bashshell. El shell debe admitir "Expansión de llaves" y "Expresiones regulares" para los patrones de archivo.
Mircea Vutcovici
3

La forma más fácil, en mi opinión, es eliminar todo el directorio, incluido él mismo, y luego volver a crear la carpeta. Hay situaciones en las que esta no es una buena solución (como secuencias de comandos desatendidas o canalizaciones más complejas), pero no especificó por qué no desea eliminar la carpeta.

rm -rf foldername
mkdir foldername

Ups Lo especificaste (volví a leer tu publicación). Bueno, aún así, eliminar y recrear puede funcionar. Especialmente si encadena comandos juntos, como

rm -rf foldername && mkdir foldername

O

rm -rf foldername; mkdir foldername
JDS
fuente
A veces no tiene permiso en la carpeta principal o desea conservar ciertos atributos que desconoce. Por ejemplo, no puede eliminar su carpeta de inicio como usuario no root, pero puede eliminar cualquier cosa debajo de ella.
Mircea Vutcovici
Esta debería ser la respuesta aceptada. +1
CodeMed
0

Qué tal si

cd MYFOLDER
find . | rm -rf

Esto también elimina los archivos ocultos (los que comienzan con un punto).

Janne Pikkarainen
fuente
1
Esto eliminará MYFOLDER también.
Mircea Vutcovici
0

Prueba a rm -r -f filenametrabajar con CentOS 6.x

Shiv Singh
fuente
0

Recomiendo esta alternativa (también elimina archivos con espacios en los nombres):

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
Andres SK
fuente