Abbiamo un problema con una cartella che diventa ingombrante con centinaia di migliaia di piccoli file.
Ci sono così tanti file che eseguono rm -rf
restituisce un errore e invece quello che dobbiamo fare è qualcosa del tipo:
find /path/to/folder -name "filenamestart*" -type f -exec rm -f {} ;
Funziona ma è molto lento e non riesce costantemente a esaurire la memoria.
C'è un modo migliore per farlo? Idealmente vorrei rimuovere l'intera directory senza preoccuparmi del contenuto al suo interno.
Risposta accettata:
Usare rsync è sorprendentemente veloce e semplice.
mkdir empty_dir
rsync -a --delete empty_dir/ yourdirectory/
La risposta di @sarath ha menzionato un'altra scelta veloce:Perl! I suoi benchmark sono più veloci di rsync -a --delete
.
cd yourdirectory
perl -e 'for(<*>){((stat)[9]<(unlink))}'
Fonti:
- https://stackoverflow.com/questions/1795370/unix-fast-remove-directory-for-cleaning-up-daily-builds
- http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux