我正在尝试遍历文件夹并根据文件名的结尾执行命令。
我在
上尝试了一些变体for f in *.fastq.gz; do [[ "$f" =~ ^([^_]+_[^_]+)_.*(_[^_]+)_[0-9]+\.fastq\.gz$ ]];
function ( firstfile_R1 secondfile_R2);
done
但我不知道如何针对两个输入执行此操作。
我的文件名约定是
filename_S [1-24] _R1_merged.fastq.gz
或
filename_S [1-24] _R2_merged.fastq.gz
我所有的文件都与R1和R2等效文件配对,我希望在终端中有一种自动的方式来运行它。
我在trimmomatic函数上使用了此函数,但我认为对于需要两个输入函数的人来说,它应该是相同的。
我希望使用循环将每对示例输入到命令函数中,但是我无法弄清楚如何正确地循环以获取正确的_R1和_R2文件,以便可以在其中输入它们我的功能。
答案 0 :(得分:0)
首先,我假设您发布的内容是伪代码,但首先在https://www.shellcheck.net/
中进行尝试然后尝试这样的事情-
for f in [^_]*_S[0-9]*_R1_[^_]*.fastq.gz
do myfunc "$f" "${f/_R1_/_R2_}" # parallel filenames assumed
done
或者更好,恕我直言-
for f in *_S[0-9]*_R1_*.fastq.gz # less specificity, but less noisy
do myfunc "$f" "${f/_R1_/_R2_}"
done