删除bash中的双扩展名

Dᴀʀ*_*ᴅᴇʀ 12 bash shell rename

我熟悉重命名,但我很好奇重命名仍然适用于删除重复扩展?

说我有一些名为的文件:

  • picture2.jpg.jpg
  • picture9.jpg.jpg
  • picture3.jpg.jpg
  • picture6.jpg.jpg

你会如何删除重复的扩展?

最终结果:

  • picture2.jpg
  • picture9.jpg
  • picture3.jpg
  • picture6.jpg

sam*_*hen 17

假设:

  • 您只想在当前工作目录中执行此操作(非递归)
  • 双扩展的格式精确如下.jpg.jpg:

然后以下脚本将起作用:

#!/bin/bash

for file in *.jpg.jpg
do
    mv "${file}" "${file%.jpg}"
done
Run Code Online (Sandbox Code Playgroud)

说明:

要使用此脚本:

  • 创建clean_de.sh在该目录中调用的新文件
  • 将其设置为可执行文件 chmod +x clean_de.sh
  • 然后运行它 ./clean_de.sh

警告说明:

正如@gniourf_gniourf指出的那样,-n如果你mv支持它,请使用该选项.

否则 - 如果您拥有a.jpg并且a.jpg.jpg在同一目录中,它将重命名a.jpg.jpga.jpg并在此过程中覆盖已存在a.jpg但没有警告.


ani*_*ane 5

一行重命名命令也应该足够了(至少对于您的情况):

rename 's/\.jpg\.jpg$/.jpg/' *.jpg.jpg
Run Code Online (Sandbox Code Playgroud)