我正在寻找一种从命令行触摸目录(和子目录)中的每个文件的方法,因为我的一个错误,我的同步回购已经在我的开发机器上有点不合时宜了。
我现在通过一些不愉快的巫术设法让它在一台机器上恢复到干净的状态,在我进行下一次同步之前,我想在这台机器上优先考虑所有时间。
有没有简单的方法来触摸所有文件?
或者我最好是手动同步目录吗?
(我使用dropbox进行同步以供参考)
答案 0 :(得分:15)
您可以使用find
和xargs
来触摸当前或指定目录或下面的每个文件:
find . -print0 | xargs -0 touch
表示当前目录。对于指定的目录:
find /path/to/dir -print0 | xargs -0 touch
-print0
的{{1}}选项以及find
的{{1}}选项通过使分隔符为NULL,使命令对包含空格的文件名具有鲁棒性。
编辑:
正如Jeremy J Starchar在评论中所说,上述内容仅适用于-0
和xargs
是GNU工具链的一部分。如果您使用的是GNU工具系统,则可以使用:
find
按 dcgregorya 进行编辑:
必须针对非常大的数据集执行此操作,我发现此命令(更快)更快。
xargs
限制查找文件夹然后对文件夹/*执行触摸。
答案 1 :(得分:0)
所以这是我解决所有文件的直接问题的解决方案,是否可以使用dropbox。
在相关目录的根目录
find . -print -exec touch {} \;
(打印是无关紧要的,但对反馈有帮助)