在一个目录中,我有不同的文件名。我在匹配模式时遇到了问题。我有前缀'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‘与立即的3位数的abc和abcdef匹配,作为abc字母之后的abc。有谁能建议一些好的方法来解决这个问题吗?
发布于 2014-03-06 02:31:11
尝试使用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。
https://stackoverflow.com/questions/22205901
复制相似问题