Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 运行rsync-av`cat/path/to/file`/destination时文件路径上的转义空格/_Macos_Terminal_Rsync - Fatal编程技术网

Macos 运行rsync-av`cat/path/to/file`/destination时文件路径上的转义空格/

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/ 当我运行上面的命

我有一个纯文本文件,其中有一个路径列表(大约120个,每行一个),我需要将其重新同步到一个目录中,为此,我使用:

问题是路径包含用\转义的空格,因此它们看起来如下所示:

/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/"