GNU/Linux >> Tutoriels Linux >  >> Linux

Un moyen plus rapide de supprimer un grand nombre de fichiers

find … -exec rm {} \; exécute le rm commande pour chaque fichier. Même si le démarrage d'un nouveau processus est assez rapide, c'est toujours beaucoup plus lent que le simple fait de supprimer un fichier.

find … -exec rm {} + appellerait rm par lots, ce qui est beaucoup plus rapide :vous payez le coût d'exécution de rm une fois par lot, et chaque lot effectue de nombreuses suppressions.

Encore plus rapide est de ne pas invoquer rm du tout. Le find la commande sous Linux a une action -delete pour supprimer un fichier correspondant.

find ./cache -type f -mtime +0.5 -delete

Cependant, si vous produisez des fichiers à un rythme tel que find … -exec rm {} \; ne peut pas suivre, il y a probablement quelque chose qui ne va pas avec votre configuration. Si cache contient des millions de fichiers, vous devez le diviser en sous-répertoires pour un accès plus rapide.


Essayez d'utiliser xargs :

find ./cache -mtime +0.5 -print0 | xargs -0 rm -f

Mettre à jour l'explication pour @pradeepchhetri

Si vous utilisez find avec -exec , chaque fichier find trouvé appellera rm une fois. Donc, si vous avez trouvé un grand nombre de fichiers, c'est-à-dire 10 000 fichiers, vous avez appelé rm 10000 fois.

xargs traitera la sortie de find comme argument de commande à rm , de sorte que xargs fournira autant d'arguments que rm peut gérer à la fois, c'est-à-dire rm -f file1 file2 ... Ainsi, il fait moins d'appels de fourche, rend le programme exécuté plus rapidement.


Linux
  1. Comment rechercher et supprimer des répertoires et des fichiers vides sous Unix

  2. Comment rechercher et supprimer des répertoires et des fichiers vides sous Linux

  3. Comment compter le nombre de fichiers dans chaque répertoire ?

  4. Supprimer les fichiers correspondants dans tous les sous-répertoires

  5. Comment compter le nombre total de lignes de fichiers trouvés ?

Trouver des fichiers volumineux sous Linux

Comment rechercher et supprimer des fichiers en double sous Linux

Comment déplacer un grand nombre de fichiers sous Linux

Comment copier un grand nombre de fichiers sous Linux

Comment compresser des fichiers volumineux (100 Go +) plus rapidement sous Linux

Linux :rechercher le nombre de fichiers dans un répertoire et des sous-répertoires