根据扩展名将文件名转换为小写的脚本
答案1
要对多个扩展递归地执行此操作,您可以使用 zsh 的 zmv:
zsh -c '
autoload zmv
ext=(jpg mp3 ogg)
zmv -n "(**/)(*.(#i)(${(j:|:)ext}))" "\$1\${(L)2}"'
(高兴时删除-n
(或用 替换-v
))。
上面的(#i)
是打开不区分大小写的通配符,并且是用 来连接列表${(j:|:)ext}
的元素。也可以直接写:$ext
|
zsh -c '
autoload zmv
zmv -n "(**/)(*.(#i)(ogg|jpg|mp3))" "\$1\${(L)2}"'
答案2
我不确定你的问题如何链接到代码,所以我将重点关注这个问题。
在bash
版本 4 及更高版本中,您可以使用类似以下内容来执行此操作:
for file in ./*.JPG; do # Iterate over all items in the current directory that match *.JPG
mv "$file" "${file,,}" # Move the file found to a lowercase mapping (this is what the ,, parameter expansion method does)
done
显然替换*.JPG
为您想要的等效扩展名。