我如何使用正则表达式获取文件的某个字符串

时间:2010-04-20 09:26:23

标签: linux bash

使用linux bash shell,我如何使用正则表达式来获取某个文件的字符串

通过示例:

for filename * .tgz 做

“获取特定的文件名字符串(在我的情况下,获取文件2010.01.12myfile.tgz的2010.04.12)”

完成

或者我应该转向perl

的Merci

坦率

3 个答案:

答案 0 :(得分:1)

使用bash,对于最简单的情况,如果你知道你想得到的是一个日期戳,你可以只使用shell扩展

#!/bin/bash

for file in 20[0-9][0-9].[01][0-9].[0-9][0-9]*tgz
do
 echo $file
done

否则,如果它在第一个字母之前的任何内容,

for file in *tgz
do
 echo ${file%%[a-zA-Z]*}
done

否则,您应该说明您的搜索条件。

答案 1 :(得分:1)

FILE=2010.01.12myfile.tgz

echo ${FILE:0:10}

给出

2010.01.12

答案 2 :(得分:0)

#!/bin/sh
a="2010.04.18Myfile.tgz"
echo ${a%%+([a-zA-Z.])}

bash'regexp非常强大(至少与标准sh或command.com相比: - ))