我正在使用 Mac OS。这是启动我的程序的命令行代码(两部分)
nucmer --mum file1.txt file2.txt
show-snps -Clr -x 2 out.delta > out_file1.snps
程序的第一部分创建文件 out.delta。我的 file2.txt 总是相同的,但我想用不同的 file1.txt 启动这两个部分 35000 次。所有文件都位于同一目录中。
是否可以使用 BASH 来实现?
将所有输入文件保存在一个目录中。创建一个包装器脚本来调用nucmer
脚本,然后调用show-snps
脚本。您的包装脚本将接受文件目录的路径作为输入。遍历目录中的所有文件并调用您的两个脚本。
您可以按照以下方式做一些事情:
find . -maxdepth 1 -type f -print | grep -v './out_' | while read f
do
b=$(basename ${f})
nucmer --mum ${f} file2.txt
show-snps -Clr -x 2 out.delta > out_${b}.snps
done
该find
位查找当前目录中的所有文件。grep
过滤掉任何以前的输出文件,以防你以前运行过一些。该basename
行去除了前导./
和尾随扩展名,然后您的两个程序使用输入文件名和基于基本名称输出的输出文件名运行。
如果你没有得到一个参数列表太长的错误,你可以只使用:
for f in file*.txt; do nucmer --mum $f second.txt; show-snps -Clr -x 2 out.delta > out_${f%.txt}.snps; done