Bash脚本删除目录中多个文件名末尾的“ x”个字符?

发布于 2021-02-02 11:10:19

我在目录(/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选择了这些选项,则我对此没有太多经验。

关注者
0
被浏览
102
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。
     mv $filname $(echo $filename | sed -e 's/.....\.moc1$//');
    

    要么

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

    %%是bash内部操作员…



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看