我在目录中有一个文件名列表(/path/to/local)。我想从所有这些文件名中删除一定数量的字符。

示例文件名:

iso1111_plane001_00321.moc1
iso1111_plane002_00321.moc1
iso2222_plane001_00123.moc1

在每个文件名中,我希望删除文件扩展名前的最后5个字符。

例如:
iso1111_plane001_.moc1
iso1111_plane002_.moc1
iso2222_plane001_.moc1

我相信可以使用sed完成此操作,但是我无法确定确切的编码。就像是...
for filename in /path/to/local/*.moc1; do
    mv $filname $(echo $filename | sed -e 's/.....^//');
done

...但这是行不通的。抱歉,如果我宰了sed选项,那么我没有太多经验。

最佳答案

 mv $filname $(echo $filename | sed -e 's/.....\.moc1$//');

或者
 echo ${filename%%?????.moc1}.moc1

%%是bash内部运算符(operator)...

10-05 22:29