批量小写文件扩展名

and*_*ign 1 filenames rename

将文件扩展名从大写重命名为小写的命令是什么?

例子:

hello.JPG
hi.JPG
Run Code Online (Sandbox Code Playgroud)

到:

hello.jpg
hi.jpg
Run Code Online (Sandbox Code Playgroud)

Jef*_*ler 7

如果您知道要处理的文件扩展名,则可以对其进行硬编码:

for f in *.JPG
do
  mv "$f" "${f%.JPG}.jpg"
done
Run Code Online (Sandbox Code Playgroud)

对于更一般的情况:

for f in *
do 
  e="${f##*.}"
  b="${f%.*}"
  mv "$f" "${b}.${e,,}"
done
Run Code Online (Sandbox Code Playgroud)

其中繁重的工作是通过bash 变量扩展来完成的:

  • 保存扩展名(尽可能多地从文件名的前面去掉,直到找到一个句点)
  • 保存文件名的其余部分(最少去掉文件名末尾的句点)
  • 将文件重命名为新文件名,,,在进程中将扩展名 ( )小写