Tengo una carpeta con 266778 subcarpetas. ¿Cómo puedo borrarlo?
Yo he tratado
cd ~/.local/share/Trash/
sudo rm -rf *
Pero lleva mucho tiempo. Después de 1 minuto, 25 segundos en tiempo real y 0.072 segundos de tiempo de usuario, solo eliminó 2500 carpetas. De esta manera, tomará más de dos horas eliminar esta carpeta.
¿Hay alguna forma más rápida de eliminar esta carpeta? ¿Por qué hay una diferencia tan grande entre el tiempo del usuario y el tiempo real?
real 1m25.474s
user 0m0.072s
sys 0m28.142s
Yo uso Linux 2.6.32 (Ubuntu 10.04.4 LTS).
filesystems
rm
Martin Thoma
fuente
fuente
Respuestas:
Si su versión de "find" implementa el subcomando -delete, entonces puede intentar
En este caso:
Algunos comandos, como rm, realizan la mayor parte de su trabajo en el núcleo. En las rutinas del sistema de archivos, para ser exactos. El tiempo dedicado a realizar llamadas al sistema se contabiliza de esa manera, por lo que si bien su comando "rm" se ejecuta durante mucho tiempo, no hace mucho trabajo en tierra de usuario: las llamadas al sistema realizan la mayor parte del trabajo.
fuente
find ~/.local/share/Trash/*/ -delete
(por supuesto, esto también eliminará archivos (y directorios) en cualquiera de esos Trash / * / subdires también)time
find directory -delete
realmente más rápido querm -rf directory
? Después de todo, realizan el mismo trabajo, y no hay dos formas de hacerlo.Depende de tu definición de rápido . Las respuestas que ya se encuentran aquí brindan una buena solución para eliminar realmente los directorios del sistema de archivos, pero si lo que realmente necesita es liberar el nombre del directorio lo más rápido posible, un cambio de nombre en el mismo sistema de archivos es instantáneo:
Técnicamente, esto es trampa, ya que no he acelerado la eliminación real, pero prácticamente es muy útil: uso este truco todo el tiempo para no tener que esperar las operaciones de eliminación lentas.
fuente
mktemp
es lo que estaba tratando de recordar ...rm -rf directory
o,rm -rf *
por supuesto, es el método más rápido a menos que surm
implementación local esté rota.Usar
find
no da ventajas.Si esto es rápido o lento depende principalmente del sistema de archivos y la implementación del sistema operativo. Entonces la pregunta parece ser inapropiada.
UFS y ZFS en Solaris son conocidos por ser muy rápido con este tipo de tareas ya que ambas implementaciones de sistemas de archivos incluyen código de borrado de fondo que hace que el retraso
unlink()
yrmdir()
llamadas para volver rápido, incluso cuando el objeto relacionado tardará más tiempo en total.Con la eliminación de fondo retrasada en el núcleo, las actualizaciones del directorio también se pueden realizar rápidamente y esto ayuda a acelerar toda la operación.
fuente
Esta es solo una respuesta parcial, arrojando luz sobre los tres valores que devuelve el comando; citado de la página de
time(1)
manual :fuente