在目录中,我有不同的文件名。 我在匹配模式方面面临问题。 我有前缀'abc'的文件如下: abc123.10122013.txt abc254.10122013.txt abc542.54212013.txt 和前缀为''abcdef'的文件如下: abcdef321.10212013.txt abcdef321.12222013.txt abcdef321.08252013.txt
在我的Korn shell脚本中,我正在基于前缀在for循环中进行一些操作。 所以发生了什么是前缀'abc'时包含前缀'abcdef'的文件 因为我使用像'abc *'
这样的通配符while read base
do
for file in $(ls "${base}"* | sort | head -4 )
do
compress $file
done
done <xyz
因此,我计划将'abc'与abc匹配,并立即使用3位数字 与abc alphabates一样abcdef。 任何人都可以建议一些好方法来破解这个
答案 0 :(得分:0)
尝试使用grep
:
PATT="abc[0-9]\{3\}"
for file in $(ls "${base}"* | sort | grep ${PATT} | head -n) do ... done
对于abcdef文件(假设这是你期望的唯一其他模式):
PATT="abc[0-9]\{3\}"
for file in $(ls "${base}"* | sort | grep -v ${PATT} | head -n) do ... done
第一个for循环将选择以abc开头,后跟3个数字的文件。第二个会选择那些不遵循这种模式的人,大概是abcdef。