如何遍历文件夹并在功能中输入文件名

时间:2019-04-02 12:51:55

标签: bash

我正在尝试遍历文件夹并根据文件名的结尾执行命令。

我在

上尝试了一些变体
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文件,以便可以在其中输入它们我的功能。

1 个答案:

答案 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