我很好奇我是否可以在执行模式匹配时否定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类?
答案 0 :(得分:4)
您可以使用*[^[:digit:]]
匹配不以数字结尾的文件:
printf "%s\n" *[^[:digit:]]
file
答案 1 :(得分:4)
外方括号表示字符类。内部的表示POSIX类。否定字符类:
ls -l *[^[:digit:]]