如何按文件类型递归查找文件并在ssh中将它们复制到目录?

时间:2013-08-20 14:55:47

标签: linux bash centos

我想找到文件夹中的所有pdf个文件。它包含内部的pdf个文件以及包含更多内容的更多目录。该文件夹位于我有ssh访问权限的远程服务器上。我正在使用mac终端,但我相信我连接的服务器是Centos。

我需要找到所有pdf并将它们全部复制到远程服务器上的一个目录中。我已经尝试了大约10种变化而没有运气。我和远程系统似乎都没有将-exec识别为命令,尽管exec很好,所以这就是问题。

我不确定这里的问题是什么,但命令没有失败它只是坐在那里并永远失速所以我没有任何有用的错误发布。

cp $(find -name "*.pdf" -type f; exec ./pdfsfolder {} \; | sed 1q)

find: ./tcs/u25: Permission denied
find: ./tcs/u68: Permission denied
-bash: /var/www/html/tcs_dev/sites/default/files/pdfsfolder: is a directory
-bash: exec: /var/www/html/tcs_dev/sites/default/files/pdfsfolder: cannot execute: Success
cp: target `./runaways_parents_guide_2013_final.pdf' is not a directory

这是我试过的最后一个,我想我现在可以忽略权限被拒绝的错误,但我不确定其余的。

3 个答案:

答案 0 :(得分:115)

试试这个:

find . -name "*.pdf" -type f -exec cp {} ./pdfsfolder \;

答案 1 :(得分:4)

这样的事情应该有效。

ssh user@ip.addr 'find -type f -name "*.pdf" -exec cp {} ./pdfsfolder \;'

答案 2 :(得分:4)

Paul Dardeau的答案是完美的,唯一的问题是,如果这些文件夹中的所有文件都不是PDF文件,并且您想要抓住它而不管扩展名。好吧,只需将其改为

即可
find . -name "*.*" -type f -exec cp {} ./pdfsfolder \;

总结一下!