scp从多个目录下载多个文件

时间:2012-10-01 16:08:10

标签: linux shell scp

我第一次使用linux工作。我试图找出如何使用scp在多个目录中下载具有相同扩展名的多个文件。

例如:

/server/directoryA/directoryA1/nameA.txt
/server/directoryA/directoryA2/contactA.txt
/server/directoryA/directoryB1/nameB.txt
/server/directoryB/directoryB2/contactB.txt

我想在一个scp命令中下载所有* .txt文件。我似乎无法让它发挥作用。

我尝试过类似的事情:

scp user@server:/server/*/*/*.txt .

我也试过-r但似乎没有工作。任何人都可以指出我正确的命令语法?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用ssh而不是scp执行此操作:

ssh user@server 'find /server/ -name "*.txt" -print0 | xargs -0 tar -cO' | tar -xivf - -C .

这会将所有* .txt复制到当前目录“。”中,但它也会复制目录结构,所以如果你只想要没有目录结构的txt文件,你需要移动所有下载的txt文件进入当前目录:

find -name "*.txt" -print0 | xargs -0 -I {} cp {} .

然后删除空目录结构:

rm ./server -r