尝试在 shell CLI 中将 .JPG 重命名为 .jpg

Bre*_*ett -1 linux shell rename command-line-interface batch-rename

我正在尝试将目录中的所有文件从.JPGext重命名为.jpg,但它不起作用。

我环顾网络并发现了一些东西,但我似乎无法让任何东西发挥作用。我尝试的最新一个是:

rename -n .JPG .jpg *.JPG
Run Code Online (Sandbox Code Playgroud)

我使用该-n标志查看要修改的内容,但没有得到任何响应(没有文件)。

我在这里做错了什么!?

Joh*_*ell 5

如果您不想使用重命名,您提到您已经尝试过各种方法,那么仅使用内置的 bash 实用程序,您就可以做到这一点。

for x in `find . -maxdepth 1 -type f -name "*.JPG"` ; do mv "$x" `echo $x|sed 's/JPG/jpg/g'`; done
Run Code Online (Sandbox Code Playgroud)

find 周围的反引号运行表达式并将结果分配给变量 x。例如,如果您需要比当前目录中的所有 JPG 更复杂的搜索,则可以使用 find 的各种开关来限制时间、大小等。Maxdepth 1 将搜索限制为当前目录。

编辑:

正如 Adrian 所指出的,使用 sed 是不必要且浪费的,因为它使用另一个子 shell,因此,这一切都可以压缩为:

 for x in `find . -maxdepth 1 -type f -name "*.JPG"` ; do mv "$x" "${x%.JPG}.jpg"; done
Run Code Online (Sandbox Code Playgroud)