Wie kann man Dateien rekursiv anfassen?

40

Ich muss den Zeitstempel von ca. 5000 Dateien ändern.

Typing touch file1.txt, touch file2.txtwird mich für immer.

Gibt es eine Möglichkeit, etwas in den Zeilen von zu tun touch -R *?

Unamata Sanatarai
quelle
1
bedeuten , hast du das touch file{1..3}.txt?
Avinash Raj
2
Sie haben nicht angegeben, welche Shell Sie verwenden, aber mit zsh touch **/*ist dies praktisch.
Marc Glisse
@ Marc Glisse Denken Sie daran, dass die Liste der Argumente leicht zu lang wird.
8.
In der Bash müssen Sie Globstar setzen, bevor Sie touch ** verwenden können
am

Antworten:

71

Sie können den findBefehl verwenden, um alle Ihre Dateien zu finden und touchjede gefundene Datei mit auszuführen-exec

find . -type f -exec touch {} +

Wenn Sie Ihr Ergebnis nur nach Textdateien filtern möchten, können Sie verwenden

find . -type f -name "*.txt" -exec touch {} +
g_p
quelle
17
Ich würde vorschlagen, -execden +Terminator (anstelle von \;) zu verwenden. Dies verkettet mehrere Argumente auf jede touchInstanz (bis zur Begrenzung der Systemargumente) und spaltet sich daher viel weniger auf (und ist wahrscheinlich schneller).
Oli
2
Und für einen Trockenlauf, lassen Sie das aus -exec touch {} +Teil, und es wird zu Ihrem Terminal drucken , was es wäre betroffen.
Alex
5
Danke, obwohl ich denke, dass bei 'find' sein erster Parameter fehlt. find . -type f -exec touch {} +
Giltsl
Was ist, wenn ich nur die Zugriffszeit ändern möchte, nicht die Änderungszeit? Sollte es "find -type f -exec touch -a {} +" sein?
Weeo