如何通过文件扩展名递归复制文件?

我想将子目录中具有特定扩展名的所有文件复制到不同的文件夹。 我不想维护目录结构,我只想将找到的所有文件复制到不同的文件夹中。

我用这个命令来做:

cp `find . -name "*.aac"` /media/moasad/New\ Volume/Media\ files/Avengers/Aud/aac/ 

但是,我注意到如果它遇到文件夹或带有空格的文件,则cp函数不知道该怎么做,我得到的错误是这样的:

 cp: cannot stat './Temporary_Items/martin/Problem': No such file or directory cp: cannot stat 'Files/nav-YCA136843.aac': No such file or directory 

请注意它的一个文件: ./Temporary_Items/martin/Problem Files/nav-YCA136843.aac

但由于“问题文件”中的空间,它很混乱。

您只需使用find命令的-exec选项即可

 find . -iname '*.acc' -exec cp {}  \;