GNU/Linux >> Znalost Linux >  >> Linux

Linux – efektivně odstranit velký adresář obsahující tisíce souborů?

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:

  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. Linux Odstraňte soubory a adresáře

  2. 5 Praktické příklady odstranění / odstranění adresáře v Linuxu

  3. Maximální počet souborů/adresářů na Linuxu?

  1. Rekurzivní počítání souborů v adresáři Linuxu

  2. rsync N nejnovějších souborů v adresáři

  3. linuxové sloučení složek:rsync?

  1. Praktické příklady příkazu rsync v Linuxu

  2. Linux ekvivalentní k robocopy?

  3. rsync neodstraní soubory v cíli