在文件名中查找日期和时间

时间:2015-07-14 14:35:50

标签: bash date time find

如何从不同长度的文件名字符串中提取日期和时间:

示例

filename_a=398MUENS05_0_20150409_210733_947.wav
filename_b=346LAUNS01B_20150611_225604.wav

我想用两个下划线作为标记,但我不知道如何用bash做到这一点。我尝试使用cut -d_ -f...但它不起作用,因为下划线的数量在每个字符串中变化。

1 个答案:

答案 0 :(得分:1)

你可以用grep之类的

来做
 grep -o '[[:digit:]]\{8\}_[[:digit:]]\{6\}'

找到8位数字,然后是下划线,然后是6位数字,只获得结果的那些部分。例如:

$ filename_a=398MUENS05_0_20150409_210733_947.wav
$ filename_b=346LAUNS01B_20150611_225604.wav
$ echo $filename_a | grep -o '[[:digit:]]\{8\}_[[:digit:]]\{6\}'
20150409_210733
$ echo $filename_b | grep -o '[[:digit:]]\{8\}_[[:digit:]]\{6\}'
20150611_225604