0

我想列出定位输出的文件。我scp想拿清单。

我不确定语法。我对伪代码的尝试

locate labra | xargs scp {} masi@11.11.11:~/Desktop/

如何将文件移动到目的地?

4

2 回答 2

3

xargs 通常采用命令行中可以容纳的尽可能多的参数,但使用 -I 它突然只需要一个。GNU Parallel http://www.gnu.org/software/parallel/可能是一个更好的解决方案:

locate labra | parallel -m scp {} masi@11.11.11:~/Desktop/

既然你在看 scp,我可以建议你也看看 rsync 吗?

locate labra | parallel -m rsync -az {} masi@11.11.11:~/Desktop/
于 2010-06-10T20:01:27.390 回答
1

通常,{} 是一种查找方法:

find ... -exec cmd {} \;

其中 {} 是 find 正在处理的当前文件。

您可以让xargs表现得与以下类似:

locate labra | xargs -I{} echo {} more arguments

但是,您会很快注意到它多次运行命令,而不是一次调用scp

所以在你的例子中:

locate labra | xargs -I{} scp '{}' masi@11.11.11:~/Desktop/

请注意 {} 周围的单引号,因为它对于其中包含空格的路径很有用。

于 2009-11-12T21:02:25.050 回答