我正在尝试将目录中的所有文件重命名为.JPG
分机到.jpg
,但它无效。
我环顾网络并找到了一些东西,但我似乎无法工作。我尝试的最新版本是:
rename -n .JPG .jpg *.JPG
我使用-n
标志来查看将被修改的内容但我没有响应(没有文件)。
我在这里做错了什么!?
答案 0 :(得分:3)
正确的perl
rename
需要一个正则表达式,以便您实现这一目标:
$ rename 's#\.JPG$#.jpg#' *.JPG
糟糕的util-linux
rename
版本的-n
没有$ rename .JPG .jpg *.JPG
开关,所以您必须这样做:
man
请参阅{{1}}页面,了解系统上实际安装的实施方案。
答案 1 :(得分:2)
如果你不想使用重命名,你提到你已经尝试了各种各样的东西,然后只使用内置的bash工具,你可以这样做。
for x in `find . -maxdepth 1 -type f -name "*.JPG"` ; do mv "$x" `echo $x|sed 's/JPG/jpg/g'`; done
查找的反引号运行表达式并将结果赋给变量x。如果您需要比当前目录中的所有JPG更复杂的搜索,则可以使用各种开关来查找以限制时间,大小等。 Maxdepth 1将搜索限制为当前目录。
修改强>
正如Adrian所指出的那样,使用sed是不必要的,浪费,因为它使用另一个子shell,所以相反,这可以全部压缩为:
for x in `find . -maxdepth 1 -type f -name "*.JPG"` ; do mv "$x" "${x%.JPG}.jpg"; done