0

我第一次使用 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 但似乎没有用。任何人都可以指出正确的命令语法吗?谢谢!

4

1 回答 1

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
于 2012-10-01T18:49:47.370 回答