Dans cette question: Comment supprimer tous les fichiers et sous-répertoires d'un répertoire SANS supprimer le répertoire dans bash? il est demandé comment supprimer tous les fichiers d'un dossier et non le dossier lui-même.
La réponse excellente de Matt inclut l'utilisation de l'indicateur -v dans la commande 'rm'.
rm -rfv dontDeleteMe && mkdir dontDeleteMe
La commande avec laquelle je suis parti était celle ci-dessus. Certainement utile, mais l'indicateur -v dans 'rm' et/ou en général ralentit les tâches effectuées via la ligne de commande?
J'ai un dossier avec des fichiers .txt (environ 100.000 d'entre eux) que j'ai créé, supprimé et recréé pour moi plusieurs fois. Quelques fois avec rm, parfois dans le navigateur de fichiers, et j’ai le sentiment que c’est encore plus lent d’utiliser la commande rm comme indiqué ci-dessus. Le drapeau -v a-t-il quelque chose à voir avec cela?
Oui, l'indicateur -v ralentit la commande.
La plupart, sinon tous les logiciels (ou commandes) vérifient si un indicateur est fourni, puis exécutent une série de codes liés à cet indicateur. Dans le cas de l'option -v, ils exécuteraient probablement un ensemble de commandes de sortie (telles que echo
ou printf
), qu'elles auraient plutôt ignorées sans l'indicateur.
Cela signifie plus de cycles d'instruction pour le processeur et donc plus de temps d'exécution.
Il est préférable que vous n'utilisiez pas l'option -v si vous n'allez pas lire/n'avez pas besoin des messages.
D'autre part, la CLI serait/devrait être plus rapide que l'interface graphique, en supposant que vous n'incluez pas le temps nécessaire pour taper les commandes et en appuyant sur la touche Enter clé.
De ce blog de superutilisateur cette image explique très bien la lenteur
Pour la commande spécifique en question, les résultats de la commande time sont:
//with -v
real 0m8.753s
user 0m0.816s
sys 0m2.036s
//without -v
real 0m1.282s
user 0m0.124s
sys 0m1.092s
cela a été fait avec le répertoire contenant 100 000 fichiers vides
Pourquoi ne pas découvrir vous-même: utilisez le temps.
$ time rm -rfv dontDeleteMe && mkdir dontDeleteMe
real 0m0.003s
user 0m0.001s
sys 0m0.002s
$ time rm -rf dontDeleteMe && mkdir dontDeleteMe
real 0m0.002s
user 0m0.001s
sys 0m0.001s