从bash中的文件列表中删除前缀

时间:2018-10-25 14:25:18

标签: linux bash

我有一个具有通用名称模式的文件列表,所有文件都具有相同的结构(前缀ave.):

ave.20050716-12:00:00.stat_profiles.nc 
ave.20050816-12:00:00.stat_profiles.nc  
ave.20081116-00:00:00.stat_profiles.nc  
ave.20120215-12:00:00.stat_profiles.nc
ave.19990316-12:00:00.stat_profiles.nc  
ave.20020616-00:00:00.stat_profiles.nc  

我的问题是:如何从文件列表/文件夹中的所有文件中删除ave.

2 个答案:

答案 0 :(得分:0)

您可以使用for循环和string substitution

for file in ave.*
do 
    mv "$file" "${file#ave.}"
done

这只是一个入门示例,您应该检查诸如名称不带“ ave”的现有文件之类的东西。

答案 1 :(得分:0)

如果您可以使用rename软件包中的util-linux实用程序,它将使这种任务非常容易。

来自其man

  rename [options] expression replacement file...
     

rename将通过用 replacement 替换名称中首次出现的 expression 来重命名指定的文件。

所以在您的情况下:

rename ave. '' ave.*