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

Find date and time in filename

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

例子

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

我考虑过使用两个下划线作为标记,但我不确定如何使用 bash 来实现。我尝试使用 cut -d_ -f... 但它不起作用,因为每个字符串中的下划线数量各不相同。

你可以像这样用 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