svr_varsというコードがあります。 300の異なるファイルを含むディレクトリがあります。私はそれを繰り返し、ディレクトリ内の各ファイルに対してコードを実行したいと思います。 svr_vars コードは共通ファイル名 svr_vars.txt を出力します。したがって、コードを実行するたびにsvr_vars.txtファイル名が上書きされます。したがって、コードを実行するたびに名前を変更する必要があります。
1995051200_72259.txt <=ディレクトリ内のファイルはどのようなものですか?
出力名をsvr_vars.txtからsvr.1995051200_72259.txtに変更したいです。
答え1
質問を正しく理解したら、基本的に
svr_vars 1995051200_72259.txt
プログラムがという出力を生成したら、svr_vars.txt
名前を次に変更したいと思います。svr.1995051200_72259.txt
300個のファイルがすべて数字で始まり、数字で終わると仮定すると、次の.txt
ようなループを実行できます。
#!/bin/bash
for file in [1-9]*.txt
do
svr_vars "$file"
mv svr_vars.txt "svr.$file"
done
正常に動作しない場合は、このループにいくつかの完全性チェックを追加することができます。例えば
#!/bin/bash
for file in [1-9]*.txt
do
if [ -e "svr.$file" ]
then
echo "$file already processed. skipping"
else
svr_vars "$file"
if [ ! -e svr_vars.txt ]
then
echo "Failed to create results for $file"
else
mv svr_vars.txt "svr.$file"
fi
fi
done