递归触摸以修复计算机之间的同步

时间:2012-09-17 13:52:13

标签: bash command-line sync dropbox

我正在寻找一种从命令行触摸目录(和子目录)中的每个文件的方法,因为我的一个错误,我的同步回购已经在我的开发机器上有点不合时宜了。

我现在通过一些不愉快的巫术设法让​​它在一台机器上恢复到干净的状态,在我进行下一次同步之前,我想在这台机器上优先考虑所有时间。

有没有简单的方法来触摸所有文件?

或者我最好是手动同步目录吗?

(我使用dropbox进行同步以供参考)

2 个答案:

答案 0 :(得分:15)

您可以使用findxargs来触摸当前或指定目录或下面的每个文件:

find . -print0 | xargs -0 touch

表示当前目录。对于指定的目录:

find /path/to/dir -print0 | xargs -0 touch

-print0的{​​{1}}选项以及find的{​​{1}}选项通过使分隔符为NULL,使命令对包含空格的文件名具有鲁棒性。

编辑:

正如Jeremy J Starchar在评论中所说,上述内容仅适用于-0xargs是GNU工具链的一部分。如果您使用的是GNU工具系统,则可以使用:

find

dcgregorya 进行编辑:

必须针对非常大的数据集执行此操作,我发现此命令(更快)更快。

xargs

限制查找文件夹然后对文件夹/*执行触摸。

答案 1 :(得分:0)

所以这是我解决所有文件的直接问题的解决方案,是否可以使用dropbox。

在相关目录的根目录

find . -print -exec touch {} \;

(打印是无关紧要的,但对反馈有帮助)