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



基本上,因为我不得不 benzip2 .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 

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

一旦你的文件名在$i中,它就会完整地存在——你不需要做任何其他引用循环中4km部分的事情。

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

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

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

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

该命令实际上不会执行任何操作,它只会显示将要执行的操作

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

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

最新更新