2017-11-16 10 views
2

時間を節約するために、異なるパラメータで粒子シミュレーションを並列化しようとしています。したがって、私はGNUparallelを使用して、さまざまなパラメータのbashスクリプトを実行したかったのです。このスクリプトは、ファイルを読み込み、シミュレーションなどを行います。GNU並列:フォルダ内のすべてのファイルに対して1つのコマンドを並列実行する

$bash script <<< input file

しかし: -

$cd ~/parameter_files ls | parallel bash script <<< {}

がまったく動作しません。私はLinuxとGNUparallelの初心者ですので、誰かが助けてくれることを願っています。

+1

を使用してファイルの内容を渡したい場合は更新してくださいを使用することができますあなたが 'man parallel_tutorial'を歩いて1時間を過ごしたかどうかの質問 –

+0

bashスクリプトを表示し、その名前を教えてください。 –

答えて

-1

あなたは~/parameter_filesディレクトリのファイルごとにこのようなparallelを使用することができます。

find ~/parameter_files -maxdepth 1 -type f -print0 | parallel -0 bash ../script 
  • findコマンドは、シェルに各ファイル名を供給し~/parameter_filesディレクトリ内のすべてのファイルを検索し、NULが
  • parallel -0 bash ...を終了し、それらを返します。スクリプトを実行して実行します。あなたは、ほぼ正しい
+0

@Physicus:これはうまくいったのですか? – anubhava

2

は、そうでない場合は、ここで文字列<<<は、個々のbash scriptコマンドではなく、parallelコマンドへの入力を供給するコマンド

ls | parallel "bash script <<< {}" 

の周りに二重引用符を使用


しかし、このユースケースは非常に珍しいですが、基本的にあなたのスクリプトがファイル名stリング。あなただけ引数としてファイルを渡したい場合はスクリプトに、あなたは

ls | parallel bash script 

か、標準入力

ls | parallel "bash script < {}" 
+0

ポイントは、ファイル名を読み取ってPythonコードの引数として渡すことです。一方、出力変数に名前を付けるために、名前の他にファイルの特定の行も必要です。 – Physicus

+0

@Physicus私は、bashの代わりにあなたのpythonコードが与えられたファイル名に基づいてファイルI/Oを行うと仮定します – etopylight

関連する問題