1

我想递归复制所有以 .pl 结尾的文件

如果我 ls -R | grep -F .pl

我可以看到所有这些,但是如果我键入以下任何命令,我只会在当前目录中获得 *.pl 文件

cp -R *.pl

find . | ls *.pl

ls -r | ls *.pl

ls -R | grep -F .pl(这个我只得到几个)

另外,如果我想使用 scp 复制,scp -r user@address:/directory/*.pl . 我只能获取当前目录中的文件

find . -name \*.pl我没有得到所有文件,只有几个文件

如何复制所有子目录中的所有文件 *.pl?

4

2 回答 2

2
find path/to/dir -name "*.pl" -exec "cp" "{}" your/dest/dir ";"

编辑(2015 年 1 月 23 日):有人建议(通过对这篇文章的编辑)在他的外壳上它不能与引号一起使用,他必须删除它们。我不知道那是哪个外壳(:P),但它说它的工作方式如下:

find path/to/dir -name *.pl -exec cp {} your/dest/dir \;

本质上,引号是为了避免将星号扩展到文件列表(如果您在当前工作目录中有具有该扩展名的文件,这将在 bash 中自动发生),以避免在某些情况下对花括号的误解,以及避免解释;表示 bash 语句结束的分号 ( )(而我们希望它作为 find 的参数)。

于 2013-09-13T18:56:54.163 回答
0

该命令只需要一个 SSH 身份验证就可以正常工作。

scp $(find . -name *.pl) $server_address:/destination/path/
于 2016-03-22T03:55:27.833 回答