进入多个目录,查找具有特定扩展名的文件并复制到新目录

Enter to multiple directories, find files with specific extension and copy to a new directory

我正在寻找一些帮助来找出这个命令的解决方案。 我想进入多个目录,都是以这个*_genomic_prokka结尾的,那么在这些目录中,都有特定扩展名*.faa的文件 这是一个例子:

Directory:
GCA_927910925.1_ERR3827219_bin.1_metaWRAP_v1.1_MAG_genomic_prokka

然后,

File: 
GCA_916048385.1_ERR2764975_bin.4_metaWRAP_v1.1_MAG_genomic_prkk.faa

所以,我想在 bash 命令中执行此操作:

find ~/*_genomic_prokka ~/*.faa -exec cp *.faa > ~/selected_faa

"~/selected_faa" 是包含找到的所有 *.faa 文件的新目录,并将其复制到这个新目录中。 此命令无法正常工作,因为找到了 *_genomic_prokka 但没有找到 *.faa 我认为我以错误的方式使用 find 命令,也许还有另一个命令可以进入每个 *_genomic_prokka 目录并找到所有 *.faa,将它们复制到这个新目录中。 有什么想法吗?

我用for循环进入每个目录,复制每个.faa文件然后return复制到一个新目录:

for f in *_genomic_prokka
do
        cd $f
        cp *.faa ../selected_faa
        cd ..
done