GNU/Linux >> Linux Esercitazione >  >> Linux

Modo più veloce per eliminare un gran numero di file

find … -exec rm {} \; esegue il rm comando per ogni file. Anche se l'avvio di un nuovo processo è piuttosto rapido, è comunque molto più lento del semplice atto di eliminare un file.

find … -exec rm {} + chiamerebbe rm in batch, che è molto più veloce:paghi il costo dell'esecuzione di rm una volta per batch e ogni batch esegue molte eliminazioni.

Ancora più veloce è non invocare rm affatto. Il find Il comando su Linux ha un'azione -delete per eliminare un file corrispondente.

find ./cache -type f -mtime +0.5 -delete

Tuttavia, se stai producendo file a una velocità tale che find … -exec rm {} \; non riesco a tenere il passo, probabilmente c'è qualcosa che non va nella tua configurazione. Se cache contiene milioni di file, dovresti suddividerlo in sottodirectory per un accesso più rapido.


Prova a utilizzare xargs :

find ./cache -mtime +0.5 -print0 | xargs -0 rm -f

Spiegazione dell'aggiornamento per @pradeepchhetri

Se usi find con -exec , ogni file che find found chiamerà rm Una volta. Quindi, se hai trovato un numero enorme di file, ad esempio 10000 file, hai chiamato rm 10000 volte.

xargs tratterà l'output di find come argomento del comando a rm , in modo che xargs fornisca tanti argomenti quanti sono rm può gestire contemporaneamente, ad esempio rm -f file1 file2 ... Quindi fa meno chiamate fork, rende il programma più veloce.


Linux
  1. Qual è il modo migliore per contare il numero di file in una directory?

  2. Un modo semplice per sostituire i file duplicati con hardlink?

  3. Riformattare un gran numero di file XML?

  4. Come trovare ed eliminare directory e file vuoti in Unix

  5. Come trovare ed eliminare directory e file vuoti in Linux

Trova file di grandi dimensioni in Linux

Come trovare ed eliminare file duplicati in Linux

Come spostare un gran numero di file in Linux

Come copiare un gran numero di file in Linux

Come Gzip file di grandi dimensioni (100 GB+) più velocemente in Linux

Linux:trova il numero di file in una directory e sottodirectory