Macos 运行rsync-av`cat/path/to/file`/destination时文件路径上的转义空格/
我有一个纯文本文件,其中有一个路径列表(大约120个,每行一个),我需要将其重新同步到一个目录中,为此,我使用: 问题是路径包含用\转义的空格,因此它们看起来如下所示:Macos 运行rsync-av`cat/path/to/file`/destination时文件路径上的转义空格/,macos,terminal,rsync,Macos,Terminal,Rsync,我有一个纯文本文件,其中有一个路径列表(大约120个,每行一个),我需要将其重新同步到一个目录中,为此,我使用: 问题是路径包含用\转义的空格,因此它们看起来如下所示: /path/to\ some/directory-001/ /path/to\ some/directory-003/ ... /path/to\ some/directory-120/ $ xargs < file -P4 -L1 -I {} rsync -av "{}" /destination/ 当我运行上面的命
/path/to\ some/directory-001/
/path/to\ some/directory-003/
...
/path/to\ some/directory-120/
$ xargs < file -P4 -L1 -I {} rsync -av "{}" /destination/
当我运行上面的命令时,我得到:
rsync: link_stat "/path/to" failed: No such file or directory (2)
rsync: link_stat "/path/to/some/directory-001/" failed: No such file or directory (2)
如果路径中没有空间,则它可以完美工作。我尝试用双引号、单引号包装路径,删除带引号或不带引号的\
请让我知道,如果有办法解决这个问题,我可能会错过一些实际的命令
谢谢 您可以使用双引号
“
将文件/dir与空格一起使用,例如使用xargs
:
$ xargs < file -L1 -I {} rsync -av "{}" /destination/
要在源上显示完整路径,可以尝试以下操作:
$ xargs < file -L1 -I {} sh -c "echo $(pwd -P)/{}; rsync -av {} /destination/"
$xargs
这就成功了。谢谢你的帮助。现在我需要的最后一件事,可能与这个问题无关,就是让rsync显示完整的源代码路径,我想看看120“/directory-00X中的哪个/rsync处于打开状态,但默认情况下,rsync在使用--progress时仅显示目标路径。有什么提示吗?@RichardPastenes check更新的答案可能会给你一个提示:-)我结束了使用-t,所以xargs将显示当前正在运行的命令,其中包含pat,使用一个带有rsync的日志文件,并在其中插入一个新窗口tail-f以查看当前正在复制的文件:xargs-trsync.log
和tail-f rsync.log
非常感谢您的帮助@nbari
$ xargs < file -L1 -I {} sh -c "echo $(pwd -P)/{}; rsync -av {} /destination/"