基本上,因为我不得不 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
,有效地将该扩展名附加到每个文件名。