运行终端程序多个输入文件上

2024-09-30 14:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个运行在终端中的java程序,它以.txt作为输入,以.txt作为输出。我想在100个输入文件上运行这个程序。我怎样才能创建一个函数来获取所有输入文件并自动运行它们? 以下是java程序:

java -jar miraligner.jar -freq -sub 1 -trim 3 -add 3 -s hsa -i IsomiR_235G.txt -db ./DB/ -o Miraligner_235G.txt 

下面是输入文件的样子,它们只是在_和{}之间的部分不同

^{pr2}$

Tags: 文件函数程序txtadd终端dbjava
2条回答

将它们放入名为inputs的文件中并执行:

$ cat inputs | head -n2 
IsomiR_94R.txt
IsomiR_100G.txt
$ while read -r input; do
    [ -f "$input" ] && java -jar miraligner.jar -freq -sub 1 -trim 3 -add 3 -s hsa -i "$input" -db ./DB/ -o "Miralinger_${input#*_}" 
done < inputs

这将逐行读取文件inputs,并对每个输入文件执行脚本。请注意,它们可能不包含使此选项起作用的新行。文件也应该用换行符隔开。在

另一种方法是直接获取文件名,而无需创建中间文件:

for f in IsomiR_*.txt
do
    java -jar miraligner.jar -freq -sub 1 -trim 3 -add 3 -s hsa -i "$f" -db ./DB/ -o "Miraligner${f#IsomiR}" 
done

即使文件名包含空格、制表符或换行符,也可以这样做。在

相关问题 更多 >