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