Pro případ, že byste chtěli udělat víc, než jen paralelně odstraňovat adresáře, můžete s GNU paralelně dělat spoustu zajímavých věcí. Protože to často není základní utilita v distribucích, možná ji budete muset nainstalovat pomocí svého oblíbeného správce balíčků, např. apt-get install parallel
.
Ale pak můžete dělat skvělé věci, jako je tato, řekněme, že spustíte 4 paralelní procesy, chcete ukázat průběh, žádné otravné upozornění a necháte paralelně spustit příkaz spánku čekající na každý 5 s, 10 s, 15 s, 20 s.
$ parallel -j 4 --progress --no-notice sleep ::: 5 10 15 20
Computers / CPU cores / Max jobs to run
1:local / 4 / 4
Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
local:0/4/100%/5.0s
Váš příklad by fungoval takto:
$ parallel --no-notice rm -rf ::: dir1 dir2 dir3
Neváhejte a podívejte se na skvělý tutoriál.
Musel jsem co nejrychleji vyčistit některé složky v /media.
Následující příkaz dokázal smazat 9T dat na každém z 80 disků za zhruba 5 minut
$ sudo find /media -maxdepth 2 -name "data-8" -type d | while read folder; do eval "sudo rm -rf ${folder} &"; done
Toto koplo 80 paralelních rm -rf
na pozadí
Spusťte příkazy na pozadí
rm -rf dir &; rm -rf dir2 &;
syntaxe
long_command with arguments > redirection &
můžete zachytit jakékoli zprávy přesměrováním výstupu příkazu do souboru.
Tyto odkazy vám pomohou ==> http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html
Upravit:
Název otázky a uvedený příklad působí dojmem, že problém je velmi malý. Ale přidaná odměna ukazuje závažnost problému.
Bylo by lepší, kdybyste specifikovali povahu vašich souborů. Poskytuji však nějaké mazání založené na rozdělení, které lze implementovat jako paralelní provádění Můžete vyzkoušet níže uvedené možnosti na základě vašeho požadavku.
find /yourpath/folder1 -size +1048576 -exec rm -f {} \; &
find /yourpath/folder2 -size +1048576 -exec rm -f {} \; &
ls -l /yourpath/folder1 | awk '{print $9}' | awk -F. '{print $(NF)}' |sort |uniq
můžete získat výsledek jako
.txt
.log
.tmp
.zip
nyní odstraňte soubory založené na příponách
find yourpath/folder1 -name '*.txt' -exec rm {} \; &
find yourpath/folder1 -name '*.tmp' -exec rm {} \; &
find yourpath/folder1 -name '*.log' -exec rm {} \; &
find yourpath/folder2 -name '*.txt' -exec rm {} \; &
find yourpath/folder2 -name '*.tmp' -exec rm {} \; &
find yourpath/folder2 -name '*.log' -exec rm {} \; &
find yourpath/folder1 -mtime +5 -exec rm {} \;
NEBO
find yourpath/folder2 -mtime +5 |xargs rm
find foldername -exec rm -rf {} \; &