linux - 尝试在 shell CLI 中将 .JPEG 重命名为 .jpg

标签 linux shell rename command-line-interface batch-rename

我正在尝试将目录中的所有文件重命名为 .JPG分机至 .jpg但它不起作用。

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

rename -n .JPG .jpg *.JPG

我使用了-n标记以查看要修改的内容,但我没有得到响应(没有文件)。

我在这里做错了什么!?

最佳答案

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

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

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

关于linux - 尝试在 shell CLI 中将 .JPEG 重命名为 .jpg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24157285/

相关文章:

regex - 如何批量将前置年份移动到文件名的末尾?

linux - 我如何在 ubuntu 中使用 CMake 宏

mysql - 通过shell脚本连接mysql数据库服务器

linux - 循环遍历具有相同键的关联数组

linux - 如果文件名作为变量传递,如何使用 diff 命令比较两个 tar 文件的内容

azure - 是否可以使用 Azure 门户重命名 Azure 应用服务计划?

c - 如果无法删除共享内存段会发生什么

linux - 在 Fedora 中安装虚拟 PC

python - Virtualenv 使用了错误的 python,即使它位于 $PATH 中的第一个

bash 删除文件名的一部分