在多个输入文件上运行shell程序

16 浏览
0 Comments

在多个输入文件上运行shell程序

如何设置一个命令行程序来运行文件夹中的所有输入文件?\n假设我的输入文件的命名方式如下,并且在_.txt之间的部分是不同的:\n

IsomiR_377G.txt,
IsomiR_377R.txt,
IsomiR_379G.txt,
....

\n我的程序名为bowtie,有两个选项inputoutput\nbowtie -i IsomiR_377G.txt -o IsomiR_377G.sam \n考虑到以下内容:\n

for f in IsomiR_*.txt
do
    bowtie -i "$f"  -o "Output${f#IsomiR}" 
done

\n我在awk函数中遇到了类似的问题:\n

for f in IsomiR_*.txt 
do 
awk '{printf ">%s_%s\n %s\n",$1,$2,$1;}' "$f" > "Header${f#IsomiR}" 
done
-bash: syntax error near unexpected token `>'

0
0 Comments

问题的出现原因是需要在多个输入文件上运行相应的shell程序,而不是手动逐个运行命令。解决方法是使用一个循环来处理多个输入文件,并根据文件名生成相应的输出文件名。

假设有以下三个输入文件:

IsomiR_377G.txt
IsomiR_377R.txt
IsomiR_379G.txt

希望运行相应的命令:

bowtie -i IsomiR_377G.txt -o output377G.sam
bowtie -i IsomiR_377R.txt -o output377R.sam
bowtie -i IsomiR_379G.txt -o output379G.sam

可以使用类似于问题中的循环来实现:

for f in IsomiR_*.txt; do 
    base_name=${f%.txt}
    id=${base_name#*_}
    bowtie -i "$f" -o "output${id}.sam"
done

这个循环中,首先通过删除文件名的.txt后缀和从第一个_之前的所有内容,得到ID,并将其用于生成输出文件名。

0