Juste au cas où vous voudriez faire plus que supprimer des répertoires en parallèle, vous pouvez faire beaucoup de trucs fantaisistes parallèles avec GNU parallel. Comme il ne s'agit souvent pas d'un utilitaire de base dans les distributions, vous devrez peut-être l'installer à l'aide de votre gestionnaire de packages préféré, par ex. apt-get install parallel
.
Mais ensuite, vous pouvez faire des trucs sympas comme celui-ci, disons que vous exécutez 4 processus parallèles, que vous voulez montrer la progression, sans préavis et laisser en parallèle exécuter une commande de veille en attendant 5s, 10s, 15s, 20s chacun.
$ 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
Votre exemple fonctionnerait comme ceci :
$ parallel --no-notice rm -rf ::: dir1 dir2 dir3
N'hésitez pas à consulter le tuto fin.
J'ai dû nettoyer certains dossiers dans /media aussi vite que possible.
La commande suivante a pu supprimer 9T de données sur chacun des 80 disques en environ 5mn
$ sudo find /media -maxdepth 2 -name "data-8" -type d | while read folder; do eval "sudo rm -rf ${folder} &"; done
Cela a lancé 80 parallèles rm -rf
en arrière-plan
Exécutez les commandes en arrière-plan
rm -rf dir &; rm -rf dir2 &;
syntaxe
long_command with arguments > redirection &
vous pouvez capturer tous les messages en redirigeant la sortie de la commande vers un fichier.
Ces liens vous aideront ==> http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html
Modifier :
Le titre de la question et l'exemple donné donnent l'impression que le problème est très petit. Mais une prime supplémentaire montrant la gravité du problème.
Il serait préférable que vous précisiez la nature de vos fichiers. Cependant, je propose une suppression basée sur le fractionnement qui peut être implémentée en tant qu'exécutions parallèles. Vous pouvez essayer les options ci-dessous en fonction de vos besoins.
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
vous pouvez obtenir un résultat comme
.txt
.log
.tmp
.zip
maintenant, supprimez les fichiers basés sur les extensions
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 {} \;
OU
find yourpath/folder2 -mtime +5 |xargs rm
find foldername -exec rm -rf {} \; &