0

ワイルドカードを使用したリダイレクトをテストしています。何かのようなもの:

./TEST* < ./INPUT* > OUTPUT

誰にもお勧めはありますか?ありがとう。

4

3 に答える 3

3

、、、、、の 5 つのファイルがTEST1あるTEST1INPUT1INPUT2ますOUTPUT。コマンドライン

./TEST* < ./INPUT* > OUTPUT

に拡大します

./TEST1 ./TEST2 < ./INPUT1 ./INPUT2 > OUTPUT.

./TEST1つまり、 2 つの引数 ( ./TEST2, ./INPUT2) を指定してコマンドを実行し、入力を からリダイレクトし./INPUT1、出力を にリダイレクトしOUTPUTます。

おそらくやろうとしていることに対処するために、入力リダイレクトを使用して単一のファイルのみを指定できます。TEST両方のファイルから入力を送信するにINPUT*は、プロセス置換を使用して、次のようなものを使用する必要があります。

./TEST1 < <(cat ./INPUT*) > OUTPUT

TEST*一致するすべての入力ファイルで一致する各プログラムを実行するにはINPUT*、次のループを使用します。すべてのコマンドの出力を収集し、1 つのファイルにまとめますOUTPUT

for test in ./TEST*; do
    cat ./INPUT* | $test
done > OUTPUT
于 2013-03-09T20:50:09.667 に答える
1

INPUT* と呼ばれるさまざまなリダイレクトを取得する必要がある TEST* というプログラムがあります。私がやろうとしているのは、すべてのランダムな INPUT ファイルをすべてのすべての TEST プログラムにプッシュすることです。

あなたは書ける:

for program in TEST*            # e.g., program == 'TEST678'
do
  suffix="${program#TEST}"      # e.g., suffix == '678'
  input="INPUT$suffix"          # e.g., input == 'INPUT678'
  "./$program" < "$input"       # e.g., run './TEST678 < INPUT678'
done > OUTPUT
于 2013-03-09T21:04:03.510 に答える
0
for test in ./TEST*; do
 for inp in ./INPUT*; do
   $test < $inp >> OUTPUT
 done
done
于 2013-03-09T20:52:31.190 に答える