次のようにイメージでいっぱいのディレクトリの名前を変更しようとしています。
test.jpg
funny.gif
sad.png
ファイル名.PNG
ファイル naaskjas.JPG
到着する:
1.jpg
2.gif
3.png
4.png
5.jpg
大文字->小文字変換を除いて動作します。
i=1;
shopt -s nullglob;
for f in *.jpg *.gif *.png *.jpeg *.JPG *.JPEG *.GIF; do
mv -- "$f" "$i.${f##*.}";
((i++));
done
私にもjpeg
なりたいjpg
。
答え1
次のことを試してください
ext=$( echo "$i.${f##*.}" | tr [AZ] [az] ) mv -- “$f”$i$ext
または固定長ファイル名。
dest=$(printf '08d%' $9)$( echo "$i.${f##*.}" | tr [AZ] [az] ) mv -- “$f”$dest
氏
答え2
検索/置換を使用できる${parameter/pattern/string}
だけでなく、${parameter,,pattern}
小文字に変換することもできます。
i=1;
shopt -s nullglob;
for f in *.jpg *.gif *.png *.jpeg *.JPG *.JPEG *.GIF; do
EXT="${f##*.}"
EXT=${EXT,,}
EXT=${EXT/jpeg/jpg}
mv -- "$f" "$i.${EXT}";
((i++));
done
答え3
2つのステップ:
拡張プログラム変換:
for file in *.GIF; do mv $file ${file%GIF}gif; done
for file in *.jpeg; do mv $file ${file%jpeg}jpg; done
...
ファイル数:
for file in *.gif *.jpg ...; do mv $file $i$file; ((i++)); done
答え4
(p)名前変更がある場合は、次のように作成できます。
shopt -s nullglob;
i=1;
for f in *.{jpg,JPG,jpeg,JPEG,png,PNG,gif,GIF}; do
rename 's/.*\.(.*)$/'$((i++))'.\L$1/; s/jpeg$/jpg/' "$f";
done