次のようなファイルがたくさんあります。
13831_1.jpg
13838_1.jpg
138035_1.jpg
138037_1.jpg
138039_1.jpg
ファイル名の番号に 5000000 の値を追加する必要があります。結果は次のようになります。
5013831_1.jpg
5013838_1.jpg
5138035_1.jpg
5138037_1.jpg
5138039_1.jpg
bashまたはperlでそれを行う方法はありますか?
次のようなファイルがたくさんあります。
13831_1.jpg
13838_1.jpg
138035_1.jpg
138037_1.jpg
138039_1.jpg
ファイル名の番号に 5000000 の値を追加する必要があります。結果は次のようになります。
5013831_1.jpg
5013838_1.jpg
5138035_1.jpg
5138037_1.jpg
5138039_1.jpg
bashまたはperlでそれを行う方法はありますか?
する: rename -v
. 出力される場合:
Usage: rename [-v] [-n] [-f] perlexpr [filenames]
このチェックは、少なくとも 2 つの異なる名前変更ツールがあり、機能が大きく異なるためです。そして、私が持っている解決策には、perlexpr を処理する名前の変更が必要です。
次に、次のことができます。
rename 's/^(\d+)/5000000+$1/e' *.jpg
のみを使用してこれを行う1つの方法bash
for file in *.jpg; do
number=${file%_*}
therest=${file#$number}
mv "$file" "$((number+5000000))$therest"
done
ノート:
*.jpg
現在のディレクトリ内のファイルのリストに展開され.jpg
ます (参照:ファイル名展開)。${file%_*}
_
ファイル名の後のすべてを削除して返します。(参照:シェル パラメータ展開)${file#$number}
variable の内容をnumber
ファイル名の先頭から削除して返します。(参照:シェル パラメータ展開)$((number+5000000))
内部の算術式を評価し、結果を返します (参照:算術展開)$filename = "13831_1.jpg";
$org = explode("_".$filename);
$addnumber = 5000000+$org[0];
$string = implode("_",$addnumber);