フォルダには32個の* .ddsファイルがあります。
pic-0.dds, pic-1.dds, pic-2.dds,...,pic-31.dds
名前を次のように変更したいと思います。
015040.dds, 015041.dds, 015042.dds,...,0150471.dds.
次のスクリプトを使用しようとしています。
#!/bin/bash
j=39;
for i in *.dds;
do let j+=1;
mv $i 0150$j.dds;
done
pic-0.dds
名前がに変更されましたが、エラー015040.dds
が発生しました。つまり、名前が等pic-1.dds
に変わりませんでした。015041.dds
次のような他の名前を変更するための共通スクリプトが必要です。
pic-40.dds, pic-41.dds, pic-42.dds,...,pic-53.dds
到着する:
0191.dds, 0192.dds, 0193.dds,...,0204.dds
ベストアンサー1
問題は、pic-*.dds
ダッシュの後の数字ではなく文字順にファイルを並べ替えることです。
0
この問題を解決する1つの可能な方法は、ファイル名の後にダッシュを挿入することですpic-{0..9}.dds
。その後、ファイルをアルファベット順にリストすることは、数値順にソートするのと同じで、すべてがうまく機能します。
すでに使用したものと同様のループを使用してこれを実行できます。
for f in pic-?.dds ; do
mv "$f" pic-0"${f#pic-}"
done
${f#pic-}
これはパラメータの置換#
、このシンボルは、変数$ fの値の先頭から文字列を削除するようにシェルに指示します。pic-