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.