我熟悉重命名,但我很好奇重命名是否仍然适用于删除重复的扩展名??
假设我有几个文件名为:
- 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
解释:
${file%.jpg}
:这部分叫做Parameter Subsitution.- 来自同一来源:“${var%Pattern} 从 $var 中删除与 $var 的后端匹配的 $Pattern 的最短部分。”
- 注意这里所说的“模式”叫做globbing,即different from regular expression in important ways .
要使用此脚本:
- 在该目录中创建一个名为
clean_de.sh
的新文件 - 通过
chmod +x clean_de.sh
将其设置为可执行 - 然后通过
./clean_de.sh
运行它>
注意事项:
正如@gniourf_gniourf 所指出的,如果您的mv
支持它,请使用-n
选项。
否则 - 如果您在同一目录中有 a.jpg
和 a.jpg.jpg
,它将重命名 a.jpg.jpg
到 a.jpg
并在此过程中覆盖已经存在的 a.jpg
而不发出警告。
关于bash - 删除 bash 中的双重扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13535364/