如何按文件类型递归查找文件并将它们复制到目录?
Posted
技术标签:
【中文标题】如何按文件类型递归查找文件并将它们复制到目录?【英文标题】:How to find files recursively by file type and copy them to a directory? 【发布时间】:2013-08-22 16:44:10 【问题描述】:我想在一个文件夹中找到所有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
这是我尝试的最后一个,我想我现在可以忽略权限被拒绝错误,但我不确定其余的。
【问题讨论】:
【参考方案1】:试试这个:
find . -name "*.pdf" -type f -exec cp ./pdfsfolder \;
【讨论】:
谢谢,它在那里坐了一段时间,但我认为这可能与权限错误有关。 @user3728501 它终止了 exec 表达式 我会默认使用-iname
而不是-name
,因为文件扩展名可能有大写字母。【参考方案2】:
Paul Dardeau 的回答是完美的,唯一的问题是,如果这些文件夹中的所有文件都不是 PDF 文件,并且无论扩展名如何,您都想获取它们怎么办。好吧,只需将其更改为
find . -name "*.*" -type f -exec cp ./pdfsfolder \;
总结一下!
【讨论】:
【参考方案3】:这样的事情应该可以工作。
ssh user@ip.addr 'find -type f -name "*.pdf" -exec cp ./pdfsfolder \;'
【讨论】:
@user3728501 ***.com/questions/20913198/…以上是关于如何按文件类型递归查找文件并将它们复制到目录?的主要内容,如果未能解决你的问题,请参考以下文章