9

由于我的错误,我正在寻找一种从命令行访问目录(和子目录)中每个文件的方法,我的一个同步存储库在我的开发机器上有点不同步。

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

有没有一种简单的方法可以触摸所有文件?

还是我最好手动同步目录?

(我正在使用 Dropbox 进行同步以供参考)

4

2 回答 2

15

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

find . -print0 | xargs -0 touch

对于当前目录。对于指定目录:

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

通过使分隔符为 NULL来使命令对带有空格的文件名具有鲁棒性的选项-print0find-0xargs

编辑:

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

find . -exec touch {} \;

dcgregorya编辑:

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

find ./ -type d -print0 | xargs -I{} -0 bash -c "touch {}/*"

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

于 2012-09-17T14:23:51.420 回答
0

所以这是我接触所有文件的直接问题的解决方案,它是否适用于 Dropbox 将不得不被看到。

在相关目录的根目录中

find . -print -exec touch {} \;

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

于 2012-09-18T09:49:43.607 回答