GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:eliminare in modo efficiente una directory di grandi dimensioni contenente migliaia di file?

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:

  1. https://stackoverflow.com/questions/1795370/unix-fast-remove-directory-for-cleaning-up-daily-builds
  2. http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux

Linux
  1. Esempi pratici di comando rsync in Linux

  2. Linux Elimina file e directory

  3. Numero massimo di file/directory su Linux?

  4. Linux equivalente a robocopy?

  5. rsync non eliminerà i file sulla destinazione

Trova ed elimina il file più vecchio se ci sono più di X file in una directory in Linux

Come spostare un gran numero di file in Linux

Come copiare un gran numero di file in Linux

Come contare i file nella directory su Linux

Conta il numero di file in una directory in Linux

Esempi di comandi Linux rsync