我想递归复制所有以.pl
结尾的文件如果我ls -R | grep -F .pl
我可以看到所有这些,但是如果我输入以下任何命令,我只会在当前目录中获取* .pl文件
cp -R *.pl
find . | ls *.pl
ls -r | ls *.pl
ls -R | grep -F .pl
(这个我只得到一些)
如果我想使用scp -r user@address:/directory/*.pl .
进行scp复制,我只会获取当前目录中的文件
find . -name \*.pl
我没有得到所有这些文件,只有少数文件
如何在所有子目录中复制所有文件* .pl?
答案 0 :(得分:1)
find path/to/dir -name "*.pl" -exec "cp" "{}" your/dest/dir ";"
编辑(2015/01/23):有人建议(通过编辑此帖子)在他的shell上它不能使用引号,他必须删除它们。我不知道那是哪个shell(:P),但它说它的工作方式如下:
find path/to/dir -name *.pl -exec cp {} your/dest/dir \;
基本上,引号是为了避免将星号扩展到文件列表(如果你在当前工作目录中有该扩展名的文件,这将在bash中自动发生),以避免误解一些花括号情况,并避免解释分号(;
),该分号表示bash语句的结束(而我们希望它作为查找的参数)。
答案 1 :(得分:0)
只需要一次SSH身份验证,此命令就可以正常工作。
scp $(find . -name *.pl) $server_address:/destination/path/