Se stai cercando di eliminare un numero molto elevato di file in una sola volta (ho cancellato una directory con 7.485.000 oggi +), probabilmente incorrerai in questo errore:
/bin/rm: Argument list too long.
Il problema è che quando si digita qualcosa del tipo “rm-rf *”, il “*” viene sostituito con un elenco di tutti i file corrispondenti, come “rm-rf file1 file2 file3 file4” e così via. C’è un buffer relativamente piccolo di memoria allocata per la memorizzazione questo elenco di argomenti e se è riempito, la shell non esegue il programma.
Per ovviare a questo problema, un sacco di persone useranno il comando find per trovare tutti i file e passarli uno ad uno per il comando “rm” in questo modo:
find . -type f -exec rm -v {} \;
Il mio problema è che avevo bisogno di cancellare queli 8 milioni di log e sci metteva davvero troppo tempo.
Sono incappato in un modo molto più veloce di eliminare file – il comando “find” ha un “-delete” perfetto per me! Ecco cosa ho finito per usare:
find . -type f -delete
Utilizzando questo metodo, ho cancellato di circa 2000 file / secondo … molto più veloce!
È anche possibile visualizzare i nomi dei file mentre li cancellati :
find . -type d -print -delete