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.

Respuestas:


11

Eliminar el contenido de la carpeta en su lugar.

rm -r MYFOLDER/*

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

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

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

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

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.