【发布时间】:2018-04-06 10:02:03
【问题描述】:
我正在尝试使用rsync 来备份包含某个单词的文件夹,使用ls、grep 和rsync。但是rsync 似乎不接受来自grep 的输出作为输入。我尝试了以下方法:
$ ls -d $PWD/** | grep March | rsync -av 'dst'
这实际上没有任何作用,即使仅使用 ls -d $PWD/** | grep March 会准确生成我想要移动的文件夹列表。
$ ls -d $PWD/** | grep March | xargs -0 | rsync -av 'dst'
$ ls -d $PWD/** | grep March | xargs -0 echo | rsync -av 'dst'
$ ls -d $PWD/** | grep March | xargs -0 rsync -av 'dst'
许多文件夹(包括dst,这里我用\ 转义空间)包含我认为可能会导致问题的空间,发现xargs 可能有帮助,但仍然没有移动任何东西。
我已经用sudo、rsync 和-r 的-avuoption 尝试了上述方法,尽管我将其包含在-aoption 中。我通常将--dry-run 选项用于rsync,但我也尝试过不使用。我究竟做错了什么?
是否可以像这样将输入传递给rsync?
我使用的是 OSX 10.13.3。 GNU bash,版本 3.2.57(1)
谢谢。
【问题讨论】:
-
@rkta 谢谢。 “去”的替代方案是什么?
-
您没有将空终止的数据提供给
xargs -0... 如果您想限制xargs作为参数给出的文件数量,您需要添加-n选项。 . 如果dst是您的目的地,您需要将源放在它之前,为此您需要在xargs上使用-I...(可能与-n1一起使用)。将echo与xargs一起使用是调试它的最简单方法...