从文件名中删除前缀

从文件名中删除前缀

我有一堆文件如下:

04602635_b0294.DAT20120807164534
04602637_b0297.DAT20120807164713
04602638_b0296.DAT20120807164637
04602639_b0299.DAT20120807164819
04602640_b0298.DAT20120807164748
04602641_b0300.DAT20120807164849
04602650_b0301.DAT20120807164921
04602652_b0302.DAT20120807164956

我需要重命名它们以排除前缀。它需要看起来像这样..

b0294.DAT20120807164534
b0297.DAT20120807164713
b0296.DAT20120807164637
b0299.DAT20120807164819
b0298.DAT20120807164748
b0300.DAT20120807164849
b0301.DAT20120807164921
b0302.DAT20120807164956

编辑

我忘了补充一点,我正在使用 Solaris。

答案1

for file in * ; do
    echo mv -v "$file" "${file#*_}"
done

运行此命令以确保一切正常。
如果是,请echo从命令中删除,它将根据您的需要重命名文件。

"${file#*_}"

是 shell 中常用的替换功能。它删除第一个_符号之前的所有字符(包括符号本身)。更多详情请看这里

答案2

您可以使用该工具珀尔的rename为了这:

rename "s/.*_//" *

如果您追加-n它不会重命名任何内容,只会向您显示没有-n.

回应 rush 的评论:我的实际上是Debian 和 Ubuntu软件包rename附带的链接。prenameperl

相关内容