Máme problém se složkou se stovkami tisíc malých souborů, která se stává nepraktickou.
Existuje tolik souborů, které provádějí rm -rf
vrátí chybu a místo toho musíme udělat něco jako:
find /path/to/folder -name "filenamestart*" -type f -exec rm -f {} ;
Funguje to, ale je to velmi pomalé a neustále selhává kvůli nedostatku paměti.
Existuje lepší způsob, jak to udělat? V ideálním případě bych chtěl odstranit celý adresář, aniž bych se staral o jeho obsah.
Přijatá odpověď:
Použití rsync je překvapivě rychlé a jednoduché.
mkdir empty_dir
rsync -a --delete empty_dir/ yourdirectory/
Odpověď @sarath zmínila další rychlou volbu:Perl! Jeho benchmarky jsou rychlejší než rsync -a --delete
.
cd yourdirectory
perl -e 'for(<*>){((stat)[9]<(unlink))}'
Zdroje:
- 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
Jak vymazat Bashovu mezipaměť cest ke spustitelným souborům?
Ssh – Jak předat X přes Ssh, aby bylo možné vzdáleně spouštět grafické aplikace?