複数のループを持つプログラムを実行するときにループに表示される新しいファイルの名前を自動的に変更する方法

複数のループを持つプログラムを実行するときにループに表示される新しいファイルの名前を自動的に変更する方法

私はUnixコンピュータでプログラムを実行しています。 300サイクルを持っています。各サイクルは、それぞれ1.txt、2.txt、3.txt、および4.txtを呼び出す4つのファイルを生成します。次のループでは、新しいファイルが古いファイルを上書きします。さて、ファイルが正確にループ1、ループ50、ループ100などにあることを望みます。しかし、一日中座ってプログラムの実行を見ることはできません。これらの.txtファイルが実行ディレクトリに表示されたときにループカウンタに名前を変更するタスクを実行するスクリプトがあります(最初のループの1.txtファイルは1_1.txtで、2番目のループの1.txtファイルです).txtファイルは2_1.txtになり、すぐに...)

答え1

これを行う方法はいくつかあります。どちらが最もうまく機能するかは、スクリプトの仕組みによって異なります。少なくともスクリプトやスニペットを含めるように質問を編集できる場合は、状況に応じたより正確な回答を反映するように編集します。

以下は、300回実行されるforループの例です。

for i in {1..300}; do
  echo "test$i" > 1.txt
  echo "test$i" > 2.txt
  echo "test$i" > 3.txt
  echo "test$i" > 4.txt
done

現時点では、前述のスクリプトのように、1-4.txtは各ループを上書きします。

簡単な解決策は次のとおりです。

count=1
for i in {1..300}; do
  echo "test$i" > ${count}_1.txt
  echo "test$i" > ${count}_2.txt
  echo "test$i" > ${count}_3.txt
  echo "test$i" > ${count}_4.txt
  ((count++))
done

これは、1_1.txtから300_1.txtまでのファイルがあることを意味します。

関連情報