如何在shell脚本中向文件名添加扩展名
基本上,因为我必须对.bz2文件进行加密,所以我没有任何扩展名,但是这些文件应该是.hdf4文件 所以,我可以一个接一个地做,但是我想浏览一下我目录中的所有文件 因此,对于单个文件:如何在shell脚本中向文件名添加扩展名,shell,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)
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
有关执行重命名(递归操作、剥离旧扩展等)的更全面的文档,请参阅。大多数发行版都会附带
rename
命令(有时prename
),该命令将为您完成繁重的工作:
rename -n -v 's/$/\.hdf4/' *4km
这个命令实际上不会做任何事情,它只会告诉你将要做什么
一旦您满意了,您可以再次运行它,但不需要使用-n
,这将实际重命名它们
rename
命令使用Perl命令将源文件名转换为目标文件名。在本例中,它是一个替代命令s
,它将“实体结束”标记$
替换为文本.hdf4
,有效地将扩展名附加到每个文件名。是!这就是我要找的!我必须说我是Bash和shell脚本的新手。非常感谢!好的-我现在知道了,$I,但是为什么加上“--”??@sophie“--”通常意味着选项的结束-之后的任何内容都不应被视为选项。因此,这将防止mv将名为'-filename'的内容解释为选项,而不是参数/\