Linux 删除许多文件名中不需要的部分

Linux 删除许多文件名中不需要的部分,linux,Linux,我有这样的文件名: MOD13Q1.A2013001.h25v08.005.2013018031021.hdf.250m_16_days_EVI.tif MOD13Q1.A2013001.h25v08.005.2013018031021.hdf.250m_16_days_NDVI.tif MOD13Q1.A2013001.h25v08.005.2013018031021.hdf.250m_16_days_VI_Quality.tif MOD13Q1.A2013017.h25v08.005.201

我有这样的文件名:

MOD13Q1.A2013001.h25v08.005.2013018031021.hdf.250m_16_days_EVI.tif
MOD13Q1.A2013001.h25v08.005.2013018031021.hdf.250m_16_days_NDVI.tif
MOD13Q1.A2013001.h25v08.005.2013018031021.hdf.250m_16_days_VI_Quality.tif
MOD13Q1.A2013017.h25v08.005.2013039200748.hdf.250m_16_days_EVI.tif
MOD13Q1.A2013017.h25v08.005.2013039200748.hdf.250m_16_days_NDVI.tif
MOD13Q1.A2013017.h25v08.005.2013039200748.hdf.250m_16_days_VI_Quality.tif
我只需要现有文件名中的特定详细信息。我希望将文件名重命名为:
A2013001\u h25v08\u EVI.tif

我已经使用了代码

 for f in *.tif   
do    
c1= cut -c9-16 $f    
c2= cut -c18-23 $f     
c3= cut -c60-80 $f    
c= echo $c1$c2$c3 
echo mv "{$f}" "{$c}"  
done
但是这个代码不起作用。还有其他更好的方法吗?我对Linux编码还是新手,因此任何建议都会有很大帮助


谢谢

如果您已经安装了
mmv
,就这样做吧

mmv MOD13Q1.\*.*.005.2013039200748.hdf.250m_16_days_.*.tif \#1#2#3.tif
关于您的代码:

for f in *.tif   
do    
c1= cut -c9-16 $f    
c2= cut -c18-23 $f     
c3= cut -c60-80 $f
此处缺少背景标记:

c1=`echo "$f" | cut -c9-16`
c2=`echo "$f" | cut -c18-23`    
c3=`echo "$f" | cut -c60-80`
或者,您可以使用

c1=$(echo "$f" | cut -c9-16)
c2=$(echo "$f" | cut -c18-23)    
c3=$(echo "$f" | cut -c60-80)

c= echo $c1$c2$c3 
这里,

够了

其他一些注意事项:除非明确不需要,否则您应该习惯在变量周围使用

如果你有这样的文件

MOD13Q1 A2013001 h25v08 005 2013018031021 hdf 250m_16_days_EVI.tif
(这将是完全有效和合法的)

您的代码将无法使用它们:

for i in *.tif; do
    mv "$i" "$i".bak
    mv $i $i.bak
end
将执行两个完全不同的操作:第一个将实际重命名文件,而后一个将尝试执行

mv MOD13Q1 A2013001 h25v08 005 2013018031021 hdf 250m_16_days_EVI.tif MOD13Q1 A2013001 h25v08 005 2013018031021 hdf 250m_16_days_EVI.tif.bak
这意味着移动/重命名文件
MOD13Q1
A2013001
h25v08
005
2013018031021
hdf
250m_16天_EVI.tif
MOD13Q1
A2013001
h25v08
m_16_days_EVI.tif.bak
使用
mmv

mmv -n "MOD13Q1.*.005.*.hdf.250m_16_days_*.tif" "#1_#3.tif"
如果输出看起来正确,请删除
-n
以实际重命名文件

注意:
mmv
不是标准命令,您可能必须使用系统的软件包管理器安装它

mmv -n "MOD13Q1.*.005.*.hdf.250m_16_days_*.tif" "#1_#3.tif"