我试图在一个while读取命令中合并一个for循环。如果单独运行,则此for循环可根据需要工作:
for file in *postp*/*;
do;
ls $file/*/*/sequences/*/*_supercontig.fasta | xargs cat > My_New_File.txt;
done;
但是,我只希望对基于给定输入列表(Files_to_cat.txt)命名的文件(* .fasta)进行分类。这是我正在尝试的代码,但是返回一个空文件,所以我出错了。
while read -r name;
do;
for file in *postp*/*;
do;
ls $file/*/*/sequences/*/"$name"_supercontig.fasta | xargs cat > My_New_File.txt;
done;
done<Files_to_cat.txt
请注意,Files_to_cat.txt中的列表与* _supercontig.fasta的前缀匹配
任何帮助将不胜感激。
答案 0 :(得分:0)
我无法发现您使用while read
时遇到的任何错误。
您可能会得到此结果,因为您使用了覆盖重定向> My_New_File.txt
。如果cat
至My_New_File.txt
的最后一个文件为空,则My_New_File.txt
也将为空。
我希望您要做的是:
>> My_New_File.txt;
> "Copy_of_${file##*/}_$name"
${file##*/}
与*/
匹配字符串的开头并将其删除,因此我们获得了文件的基本名称。我们也可以${file//\//-}
用破折号代替所有斜杠。