次のような名前のファイルが本当にたくさんあります。
1_x_0_a.jpg, 1_x_0_b.jpg, 1_x_5_a.jpg ... 15_x_160_a.jpg, 15_x_160_b.jpg, 15_x_165_a.jpg
ファイル名を次のように変更したいと思います。
01_x_000_a.jpg, 01_x_000_b.jpg, 01_x_005_a.jpg
したがって、x の前は 2 桁の数字で、x の後は 3 桁の数字でなければなりません。
次のような名前のファイルが本当にたくさんあります。
1_x_0_a.jpg, 1_x_0_b.jpg, 1_x_5_a.jpg ... 15_x_160_a.jpg, 15_x_160_b.jpg, 15_x_165_a.jpg
ファイル名を次のように変更したいと思います。
01_x_000_a.jpg, 01_x_000_b.jpg, 01_x_005_a.jpg
したがって、x の前は 2 桁の数字で、x の後は 3 桁の数字でなければなりません。
次のコードは、MATLAB の比較的新しいバージョンで動作するはずです。
fileStruct = dir;
files = {fileStruct.name};
for oldFile = files
oldFile = oldFile{1}; //Takes string out of cell
// Embedding the sprintf in a regexprep only works in certain versions
newFile = regexprep(oldFile, '^(\d*)', '${sprintf(''%02d'', str2num($1))}');
newFile = regexprep(newFile, '(?<=_)(\d*)(?=_)', '${sprintf(''%03d'', str2num($1))}');
movefile(oldFile, newFile);
end
以下に役立つ手順をいくつか示します。
dir
ファイル名のリストを取得するために使用します。regexprep
開始番号を先行ゼロで開始番号に置き換えるために使用しますregexprep
数字を 2 つまでのゼロで開始することにより、中間の数字を置き換えるために使用しますrename
ファイル名の変更に使用私はそれを試していないことに注意してください.renameのドキュメントはftpサイトを参照しているため少し奇妙ですが、うまくいくかもしれません. うまくいかない場合は、すべてのファイルをコピーしてから古いファイルを削除するだけでよいと思います。
Unix または Linux マシンを使用している場合は、次の小さなシェル スクリプトを試すことができます。
ターミナルで、ファイルがあるディレクトリに移動します。
ファイルの名前を実際に変更せずに最初に試してみてmv
くださいecho
。
for file in *; do
mv $file $(echo $file | awk -F '_' '{ printf "%02d_%s_%003d_%s\n", $1, $2, $3, $4 }')
done
またはワンライナーとして
for file in *; do mv $file $(echo $file | awk -F '_' '{ printf "%02d_%s_%003d_%s\n", $1, $2, $3, $4 }'); done
ファイルの場合
1_x_0_a.jpg
1_x_0_b.jpg
1_x_5_a.jpg
15_x_160_a.jpg
15_x_160_b.jpg
15_x_165_a.jpg
私は結果を得る
01_x_000_a.jpg
01_x_000_b.jpg
01_x_005_a.jpg
15_x_160_a.jpg
15_x_160_b.jpg
15_x_165_a.jpg