ファイル名が次に終わるフォルダがあり、.TIF
forループを作成しました。
for i in *.TIF
ループから2種類のファイルの終わり(B4.TIFやB5.TIFなど)を取得したいと思います。
しかし、私はファイル名の最後の4文字を取得するのではなく、最後に追加しました。
do ...... ${i}_B4.TIF -B ${i}_B5.TIF
私が望む結果は、いくつかの計算を実行するためにこれらのファイル名を取得することです。
以下はフォルダ内のファイルの例です。
LC08_L1TP_195020_20170224_20170301_01_T1_B4.TIF
LC08_L1TP_195020_20171107_20171121_01_T1_B4.TIF
LC08_L1TP_195020_20170224_20170301_01_T1_B5.TIF
LC08_L1TP_195020_20171107_20171121_01_T1_B5.TIF
これは計算を実行するために使用するスクリプトです。
for i in *.TIF
do
gdal_calc.py -A ${i}_B4_SA.TIF -B ${i}_B5_SA.TIF --type=Float32
--outfile=~/Geodata/goteborg/croped/ndvi/${i}_NDVI.TIF --calc="(B-A)/(B+A)"
done
最終出力はマイナスB4とB5になります。したがって、${i}_B4_SA.TIF -B ${i}_B5_SA.TIF
次の2つのファイル名が生成されます。
LC08_L1TP_195020_20170224_20170301_01_T1_B4.TIF -
LC08_L1TP_195020_20170224_20170301_01_T1_B5.TIF
ベストアンサー1
ペアの半分を構成するファイルを繰り返し、各ファイルに対して対応するペアと出力ファイルのファイル名を構成します。
for b4_file in ./*_B4.TIF; do
b5_file="${b4_file%_B4.TIF}_B5.TIF"
ndvi_file="$HOME/Geodata/goteborg/croped/ndvi/${b4_file%_B4.TIF}_NDVI.TIF"
if [ ! -f "$b5_file" ]; then
printf 'Expected to find "%s" to go with "%s", but did not\n' "$b5_file" "$b4_file" >&2
continue
fi
# do whatever it is you need to do with "$b4_file" and "$b5_file"
gdal_calc.py -A "$b4_file" -B "$b5_file" --type=Float32 \
--outfile="$ndvi_file --calc="(B-A)/(B+A)"
done