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