在Unix中从文件名中提取子字符串

时间:2014-07-10 19:31:56

标签: unix filenames

我有一个文件名,其格式如下 -

Fisrt_Part_20140710.dat_07-10-2014_23:15:36.gz

我想从文件名中删除日期,时间戳和扩展名gz,因此输出文件名将如下所示:

First_part.dat

另外,我不想更改实际文件的名称,但是我需要为txt文件中的报告生成此类文件的列表,所以我并不担心扩展gz太多。

我尝试使用sed命令并尝试了很多选项,但无法让它为我工作。

由于我对Unix和sed不是很熟悉,所以任何指针都会有很大的帮助。 感谢。

1 个答案:

答案 0 :(得分:1)

这是一种(天真的)方式:

以下命令: echo First_Part_20140710.dat_07-10-2014_23:15:36.gz | sed -e 's/_[0-9]*\.dat.*/.dat/g'

输出: First_Part.dat

限制: First_Part不得包含任何数字或字符串' .dat'