如何递归接触文件?


40

我需要更改大约5000个文件的时间戳。

打字touch file1.txttouch file2.txt将带我永远。

有办法做些什么touch -R *吗?


1
你是这个意思touch file{1..3}.txt吗?
阿维纳什·拉吉

2
您没有指定要使用哪个shell,但是使用zsh touch **/*可以方便。
Marc Glisse 2015年

@Marc Glisse请记住,参数列表很容易变得太长。
bac0n

在bash中,您需要先设置globstar,然后才能使用touch **
bac0n

Answers:


71

您可以使用find命令查找所有的文件和执行touch使用每个找到的文件-exec

find . -type f -exec touch {} +

如果只想过滤文本文件的结果,则可以使用

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

16
我建议使用-exec+终止符(而不是\;)。这会将多个参数链接到每个touch实例上(达到系统参数限制),因此派生次数更少(可能更快)。
奥利(Oli)


2
对于空运行,只需省去-exec touch {} +零件,它将打印到您的终端上,它将影响到什么。
亚历克斯(Alex)

5
谢谢,尽管我认为“查找”缺少他的第一个参数。find . -type f -exec touch {} +
giltsl18年

如果我只想更改访问时间而不是修改时间怎么办?应该是“找到-type f -exec touch -a {} +”吗?
weeo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.