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.