Вы не используете переменную filename
в строке ниже:
for filename in /Test/*.fastqsanger; do
awk '{if(NR%4==1) {printf(">%s\n",substr($0,2));} else if(NR%4==2) print;}' < filename.fastqsanger | awk 'NR%2==0' | sed 's/TGAGATGTGA/*/p' | cut -d '*' -f 2 -s | sort -k 1.180,1.194 -u | cat -n | sed 's/^/>/' | tr "[\t]" "\n" > filename.fasta
done
Попробуйте:
for filename in /Test/*.fastqsanger
do
fname=`basename $filename .fastqsanger`
awk '{if(NR%4==1) {printf(">%s\n",substr($0,2));} else if(NR%4==2) print;}' < $filename | awk 'NR%2==0' | sed 's/TGAGATGTGA/*/p' | cut -d '*' -f 2 -s | sort -k 1.180,1.194 -u | cat -n | sed 's/^/>/' | tr "[\t]" "\n" > $fname.fasta
done
Это сохраняет базовое имя файла в $ fname
, так что:
/Test/abcd.fastqsanger
становится /Test/abcd.fasta
вместо /Test/abcd.fastqsanger.fasta
Я сообщил об этом в RedHat. На самом деле это было вызвано ошибкой в ядре RedHat и было исправлено в ядре -3.10.0 -693.18.1.el7. По крайней мере для NFSv3. Для NFSv4 это кажется желаемым поведением.
Если у вас есть подписка RedHat, вы можете найти билет:Билет 01951116