我熟悉重命名,但我很好奇重命名仍然申请删除重复的扩展?
说我有一些名为的文件:
如何删除重复的扩展名?
最终结果:
答案 0 :(得分:16)
假设:
.jpg.jpg
完全相同:然后以下脚本将起作用:
#!/bin/bash
for file in *.jpg.jpg
do
mv "${file}" "${file%.jpg}"
done
<强>解释强>
${file%.jpg}
:此部分名为Parameter Subsitution. 要使用此脚本:
clean_de.sh
的新文件chmod +x clean_de.sh
./clean_de.sh
警告提示:
正如@gniourf_gniourf指出的那样,如果-n
支持,请使用mv
选项。
否则 - 如果您在同一目录中有a.jpg
和a.jpg.jpg
,则会将a.jpg.jpg
重命名为a.jpg
,并在此过程中覆盖已存在的a.jpg
没有警告。
答案 1 :(得分:4)
一行重命名命令也应该足够(至少在你的情况下):
rename 's/\.jpg\.jpg$/.jpg/' *.jpg.jpg
答案 2 :(得分:1)
以下是针对此问题的更一般但仍然简单的解决方案:
for oldName in `find . -name "*.*.*"`; do newName=`echo $oldName | rev | cut -f2- -d'.' | rev`; mv $oldName $newName; done
简短说明:
find . -name "*.*.*
- 这将只能递归显示具有重复扩展名的文件
echo $oldName | rev | cut -f2- -d'.' | rev
- 诀窍发生在这里:rev命令对字符串执行反向操作,因此您现在可以看到,您希望第一个点中的整个文件名。 (gpj.gpj.fdsa)
mv $oldName $newName
- 实际重命名文件
发行说明:由于它是一个简单的单行脚本,您可以找到未处理的案例。文件名中包含额外点的文件,超深目录结构等