1979年から2018年までの日々のデータが入ったncファイルがいっぱいのフォルダがあります。 1つのNCに統合したいのですが、ペレットスクリプトを生成するためにファイルをリストしようとすると順序が変わりますね。以下にデータファイル名の例を示します。
ERA5_2018_9_12_UVP.nc
ERA5_2018_9_13_UVP.nc
ERA5_2018_9_14_UVP.nc
ERA5_2018_9_15_UVP.nc
ERA5_2018_9_16_UVP.nc
ERA5_2018_9_17_UVP.nc
ERA5_2018_9_18_UVP.nc
ERA5_2018_9_19_UVP.nc
ERA5_2018_9_1_UVP.nc
ERA5_2018_9_20_UVP.nc
ERA5_2018_9_21_UVP.nc
ERA5_2018_9_22_UVP.nc
ERA5_2018_9_23_UVP.nc
ERA5_2018_9_24_UVP.nc
日付を一覧表示すると、日付が変更されます。コマンドを使用してファイル名を変更するには、シェルスクリプトのコードを使用しようとしていますsed
。
ls *.nc >temp
for i in {1..9..1}
do
sed "s/_${i}_UVP/_0${i}_/g"
done < temp
誰でも助けることができますか?
ベストアンサー1
GNUのls
場合は-v
オプション(バージョンソート)、ファイルは時系列でリストされます。
n
次のようにglob修飾子(またはnumericglobsort
オプション)を使用しても同じですzsh
。
combine-nc-files ./*.nc(n)
これで名前を変更するには、zsh
次を使用して実行できます。
autoload -Uz zmv # best in ~/.zshrc
zmv -n '(*_<1979-2018>_)(<1-12>)_(<1-31>)(_UVP.nc)' \
'$1${(l[2][0])2}_${(l[2][0])3}$4'
(-n
満足すれば削除(試運転))
sを使用して、その月と日の幅をl
ef-padに設定します。0
2