bash - 删除 bash 中的双重扩展名

标签 bash shell rename

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

假设我有几个文件名为:

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

如何删除重复的扩展?

最终结果:

  • 图片2.jpg
  • 图片9.jpg
  • 图片3.jpg
  • 图片6.jpg

最佳答案

假设:

  • 您只想在当前工作目录中执行此操作(非递归)
  • 双重扩展的格式与 .jpg.jpg 完全相同:

然后下面的脚本将起作用:

#!/bin/bash

for file in *.jpg.jpg
do
    mv "${file}" "${file%.jpg}"
done

解释:

要使用此脚本:

  • 在该目录中创建一个名为 clean_de.sh 的新文件
  • 通过chmod +x clean_de.sh 将其设置为可执行
  • 然后通过./clean_de.sh运行它>

注意事项:

正如@gniourf_gniourf 所指出的,如果您的mv 支持它,请使用-n 选项。

否则 - 如果您在同一目录中有 a.jpga.jpg.jpg,它将重命名 a.jpg.jpga.jpg 并在此过程中覆盖已经存在的 a.jpg 而不发出警告。

关于bash - 删除 bash 中的双重扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13535364/

相关文章:

bash - 如何在 Bash 脚本中获取事件以太网连接的 MAC 地址?

linux - 在 Linux 中操作文本文件

perl - df 输出问题

python - 如何在 python 中用数字重命名多个列?

macos - 在 Mac 中重命名没有突出显示扩展名的文件名

linux - 如何识别运行脚本的用户名

regex - 在终端中选择带有前导 "_"(下划线)符号的文件夹(不是文件)

linux - awk 中嵌套的 BEGIN-END block

linux - 了解 linux 上次重启命令的结果

linux - 如何在 linux 上识别重命名的文件?