イメージディレクトリ番号の名前変更

イメージディレクトリ番号の名前変更

次のようにイメージでいっぱいのディレクトリの名前を変更しようとしています。

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

関連情報