0

Mac OS を使用しています。これは私のプログラムを起動するためのコマンド ライン コードです (2 つの部分)

nucmer --mum file1.txt file2.txt

show-snps -Clr -x 2 out.delta > out_file1.snps

プログラムの最初の部分は、ファイル out.delta を作成します。私のfile2.txtは常に同じですが、異なるfile1.txtでこの両方の部分を35000回起動したいと思います。すべての file1 は同じディレクトリにあります。

BASHを使ってそれを行うことは可能ですか?

4

3 に答える 3

2

すべての入力ファイルをディレクトリに保持します。nucmerスクリプトを呼び出してからスクリプトを呼び出すラッパー スクリプトを作成しますshow-snps。ラッパー スクリプトは、ファイル ディレクトリへのパスを入力として受け入れます。ディレクトリ内のすべてのファイルを反復処理し、2 つのスクリプトを呼び出します。

于 2013-04-29T17:43:21.620 に答える
1

これらの行に沿って何かを行うことができます:

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行は先頭./と末尾の拡張子を取り除き、入力ファイル名と basename 出力に基づく出力ファイル名で 2 つのプログラムを実行します。

于 2013-04-29T19:21:46.473 に答える
0

引数リストが長すぎるというエラーが発生しない場合は、次のように使用できます。

for f in file*.txt; do nucmer --mum $f second.txt; show-snps -Clr -x 2 out.delta > out_${f%.txt}.snps; done

于 2013-04-30T04:55:25.467 に答える