首页 > 解决方案 > 如何查找和连接具有不同字符但其根在文本文件中列出的文件?

问题描述

所以我试图连接前缀和后缀略有不同但根相同的文件。但我想为文本文件中列出的所有“根”做这件事。

到目前为止,我已经能够做到这一点,但一次只有一个根,效果很好:

#works
find directory/ -type f -name ‘*ftsW*.fna' -exec cat {} \; > new_directory/ftsW.fna

但是,当我尝试遍历“roots.txt”文件中列出的所有根时,我得到了 txt 文件中列出的所有根的空文件。

#outputs empty files

filename='roots.txt'
filenames=`cat $filename`
for a in $filenames
do find directory/ -type f -name '*$a*.fna' -exec cat {} \; > new_directory/$a.fna
done

有谁知道我可以修复此代码?谢谢!

标签: linuxbash

解决方案


当您在循环中运行时,您将第一个文件写入您的目的地,然后用下一个文件覆盖您的 dest,然后再次覆盖它,等等。所以您只会得到最后一个文件。尝试这个:

cat $(find directory/ -type f -name '*$a*.fna') > new_directory/$a.fna

这将一次对所有文件进行分类。


推荐阅读