ファイルを再帰的に「タッチ」する方法は?


40

約5000ファイルのタイムスタンプを変更する必要があります。

を入力するとtouch file1.txttouch file2.txt永遠に私が連れて行かれます。

の行で何かをする方法はありtouch -R *ますか?


1
どういう意味touch file{1..3}.txtですか?
アビナッシュラジ

2
使用しているシェルを指定しませんでしたが、zshではtouch **/*便利です。
マークグリッセ

@Marc Glisse引数リストは簡単に長くなりすぎることに注意してください。
bac0n

bashでは、タッチを使用する前にglobstarを設定する必要があります**
bac0n

回答:


71

findコマンドを使用してすべてのファイルを検索し、見つかったすべてのファイルで実行できtouchます-exec

find . -type f -exec touch {} +

テキストファイルのみの結果をフィルタリングする場合は、次を使用できます。

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

17
(の代わりに)-exec+ターミネータを使用することをお勧めし\;ます。これにより、複数の引数が各touchインスタンスにチェーンされ(システム引数の制限まで)、したがって、分岐がはるかに少なくなります(おそらくより高速になります)。
オリ

1
@g_p ...およびソースについては、「+」と「\;」の使用の違いを
αғsнιη

2
ドライランの場合は、-exec touch {} +パーツを省くだけで、影響を受けるもの端末に出力されます。
アレックス

5
ありがとう、「find」には彼の最初のパラメーターが欠けていると思うが。find . -type f -exec touch {} +
giltsl

変更時刻ではなくアクセス時刻のみを変更したい場合はどうすればよいですか?「find -type f -exec touch -a {} +」にする必要がありますか?
weeo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.