否定POSIX类bash globbing

时间:2015-11-24 21:41:54

标签: bash posix glob

我很好奇我是否可以在执行模式匹配时否定POSIX类。 我有以下内容:

file  file1  file10  file2  file3  file4  file5  file6  file7  file8  file9

说,我想ls -l只有文件:最后没有数字的所有文件。 我试过以下:

ls -l *[^[[:digit:]]]
ls -l *[!digits]
ls -l *[[!:digit:]]

以上都不适用。这在某种程度上确实有效(我得到file10):

ls *[^1-9]

但这不是重点。记录中我知道最简单的是:

ls -l | egrep -v ".*[[:digit:]]$"

有没有办法否定POSIX类?

2 个答案:

答案 0 :(得分:4)

您可以使用*[^[:digit:]]匹配不以数字结尾的文件:

printf "%s\n" *[^[:digit:]]
file

答案 1 :(得分:4)

外方括号表示字符类。内部的表示POSIX类。否定字符类:

ls -l *[^[:digit:]]