Comment toucher récursivement des fichiers correspondant à un modèle


8

Dans mon répertoire ~ / docs, je veux "toucher" tous les fichiers se terminant par .txt

Comment puis-je faire ceci?

Réponses:


20

Avec find:

find ~/docs -name "*.txt" -exec touch {} \;
  • Vous recherchez dans ~/docs
  • L' nameoption correspondra à tous les txtfichiers -  execexécutera la commande touchsur le nom de fichier, qui est substitué dans{}
  • \;termine la commande et touchsera appelé une fois pour chaque fichier trouvé

Remarque:

  • Une légère variation, \+à la fin construit une seule commande à exécuter touchsur tous ces fichiers à la fois. Ce n'est pas possible avec toutes les commandes, mais cela fonctionne touchet vous permet d'économiser quelques appels si vous avez beaucoup de fichiers affectés.

4
{} \+serait mieux ici ... touchpeut gérer de nombreux noms de fichiers sur sa ligne de commande, donc par exemple, avec 10 000 fichiers et {} \; 10 000 appels seront effectués vers touch... L'utilisation {} \+n'appellera touchqu'une seule fois (selon la mémoire disponible) ... Ici est un extrait de de trouver l' homme-page: -exec command {} + ... The command line is built in much the same way that xargs builds its command lines. Il y a plus de détails dans la man finddocumentation.
— Peter.O

@ Peter.O C'est vrai, juste une de mes habitudes d'utiliser l'autre syntaxe.
— slhck

@slhck: Et beaucoup plus lent avec des frais généraux plus élevés.
— Hello71
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.