8 我有一个目录,某些文件的扩展名是大写(.JPG)而不是小写。 我想确保每个文件都有.jpg作为扩展名。我将如何从shell提示中执行此操作? linux bash — 马克·弗林特 source 令人遗憾的是,Linux没有AppleScript。 — gadgetmo,2012年 2 太好了,Linux没有AppleScript。 — 数学
15 使用Shell参数扩展: for f in *.JPG; do mv "${f}" "${f%%.JPG}.jpg" done 该"字符会照顾包含空格的文件名,如照片经常做。 — 约翰西 source 5 +1即使文件名中有空格,此解决方案仍然有效,但是您的意思是“ $ f”而不是“ f”。 — 亚当·扎尔克曼 Shell Parameter Expansion有点神秘,可以改用基名:* .JPG中的f;做mv“ $ f”“`basename $ f .JPG`.jpg”; 完成 — 数学 @math:我更喜欢我的版本,因为它可以与包含空格的文件名一起使用,也可以与一起使用/path/to/*.JPG。欢迎您提交自己的答案,当然:) — Johnsyweb 当然,基名将除去前导目录,但将在文件名中使用空格。(我认为这不值一个答案;)因此我将其发布为评论) — 数学
10 如果可以使用外部工具(不仅是bash),请检查rename命令! rename .JPG .jpg * 该rename是的一部分util-linux。 — 乌兹索尔特 source 重命名是有问题的。随带的重命名版本perl可以接受不同的参数来执行相同的操作。 — cha0site 2012年 您能再解释一下吗?哪个版本的BTW? — 数学
2 我建议看看mmv命令。它恰好适合此类任务。在您的方案中将是: #> mmv "*.JPG" "#1.jpg" 该手册页满的例子,所以它没有去习惯它的时间。 在Debian系统上,可以通过以下方式安装: #> aptitude install mmv — 亚历山德罗·多蒂(Alessandro Dotti) source
0 如果文件名中没有空格: for f in *.JPG; do mv $f `echo $f | sed 's/JPG$/jpg/'`; done — 卡洛莉·霍瓦斯(Karoly Horvath) source 1 使它对于名称中带有空格的文件很容易做到:只需在的两个参数周围加上双引号mv。 — 亚当·扎尔克曼 我没有空格。我要添加些什么以使它在CURRENT目录中发生。目前,我出现错误-mv:无法统计“ * .JPG”:没有此类文件或目录 — Mark Flint 2012年 1 您那里没有任何JPG。 — Karoly Horvath'2