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

Gem*_*sch 9 bash command-line sync dropbox

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

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

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

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

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

imp*_*p25 15

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

find . -print0 | xargs -0 touch
Run Code Online (Sandbox Code Playgroud)

对于当前目录.对于指定的目录:

find /path/to/dir -print0 | xargs -0 touch
Run Code Online (Sandbox Code Playgroud)

-print0选项find与一起-0选项xargs使命令强大的通过使分隔符空到文件带有空格的名称.

编辑:

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

find . -exec touch {} \;
Run Code Online (Sandbox Code Playgroud)

dcgregorya编辑:

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

find ./ -type d -print0 | xargs -I{} -0 bash -c "touch {}/*"
Run Code Online (Sandbox Code Playgroud)

限制找到找到文件夹然后执行触摸文件夹/*.

  • 或者你可以使用`-execdir`动作:`find.-execdir touch'{}';; (2认同)