如何在shell脚本中为文件名添加扩展名

时间:2015-03-10 04:10:05

标签: shell

基本上,因为我必须使用.bz2文件,我最终没有任何扩展,但这些文件应该是'.hdf4'文件。

所以,我可以逐一完成,但我想浏览目录中的所有文件。

所以对于一个文件:

     mv A2003119.L3m_DAY_PAR_par_4km A2003119.L3m_DAY_PAR_par_4km.hdf4

现在尝试浏览所有文件;

     mv *4km *4km.hdf4

哪个不起作用......

所以我尝试了别的东西:

for i in *4km;
    do mv $i(*4km) $i(*4km.hdf4)
done 

我不知道如何写得正确....请任何帮助非常欢迎! 非常感谢提前!

2 个答案:

答案 0 :(得分:0)

一旦您的文件名在$i中,它就完整了 - 您不需要做任何其他引用循环中4km部分的文件。

for i in *4km; do
    mv -- "$i" "$i.hdf4"
done

有关执行重命名的更全面文档,请参阅BashFAQ #30 - 递归操作,剥离旧扩展等。

答案 1 :(得分:0)

大多数发行版都会附带rename命令(有时为prename),这将为您带来繁重的工作:

rename -n -v 's/$/\.hdf4/' *4km

该命令实际上不会任何事情,只会向您显示将要完成的内容。

一旦您满意,您可以再次运行它但没有-n,实际上会重命名它们。

rename命令使用Perl命令将源转换为目标文件名。在这种情况下,它是替换命令s,它取代了实体的结尾"带有文字$的标记.hdf4,有效地将该扩展名附加到每个文件名。