Comment «toucher» les fichiers récursivement?


40

J'ai besoin de changer l'horodatage d'environ 5000 fichiers.

Taper touch file1.txt, touch file2.txtme prendra pour toujours.

Y at-il un moyen de faire quelque chose dans les lignes de touch -R *?


1
Vouliez-vous dire cela touch file{1..3}.txt?
Avinash Raj

2
Vous n'avez pas spécifié le shell que vous utilisez, mais avec zsh, touch **/*c'est pratique.
Marc Glisse

@Marc Glisse Gardez à l'esprit que la liste d'arguments devient facilement trop longue.
mardi

En bash vous devez définir globstar avant de pouvoir utiliser contact **
bac0n

Réponses:


71

Vous pouvez utiliser la findcommande pour trouver tous vos fichiers et exécuter touchsur chaque fichier trouvé en utilisant-exec

find . -type f -exec touch {} +

Si vous souhaitez filtrer votre résultat uniquement pour les fichiers texte, vous pouvez utiliser

find . -type f -name "*.txt" -exec touch {} +

17
Je suggère d'utiliser -execle +terminateur de (au lieu de \;). Cela enchaînera plusieurs arguments sur chaque touchinstance (jusqu'à la limite d'arguments système) et en produira beaucoup moins (et sera probablement plus rapide).
Oli


2
Et pour un essai sur piste, laissez simplement de côté la -exec touch {} +pièce et elle imprimera sur votre terminal ce que cela aurait affecté.
Alex

5
Merci, bien que je pense que "trouver" manque son premier paramètre. find . -type f -exec touch {} +
giltsl

Que se passe-t-il si je veux seulement changer l'heure d'accès, pas l'heure de modification? Devrait-il être "find -type f -exec touch -a {} +"?
weeo
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.