Linux 为什么这两个命令的结果不同?
这个命令(ls-d[!0-99])的结果已经包含了这个命令(ls-d[!0-100])。但在我看来,这两个命令的结果应该是相同的。谁能帮我解释第二个命令的结果Linux 为什么这两个命令的结果不同?,linux,wildcard,Linux,Wildcard,这个命令(ls-d[!0-99])的结果已经包含了这个命令(ls-d[!0-100])。但在我看来,这两个命令的结果应该是相同的。谁能帮我解释第二个命令的结果 jack@DESKTOP-KRIB7TB:~$ ls -d [!0-99]* a b c d e f g h i j k jack@DESKTOP-KRIB7TB:~$ ls -d [!0-100]* 2 25 30 36 41 47 52 58 63 69 74 8 85 90 96
jack@DESKTOP-KRIB7TB:~$ ls -d [!0-99]*
a b c d e f g h i j k
jack@DESKTOP-KRIB7TB:~$ ls -d [!0-100]*
2 25 30 36 41 47 52 58 63 69 74 8 85 90 96 c i
20 26 31 37 42 48 53 59 64 7 75 80 86 91 97 d j
21 27 32 38 43 49 54 6 65 70 76 81 87 92 98 e k
22 28 33 39 44 5 55 60 66 71 77 82 88 93 99 f
23 29 34 4 45 50 56 61 67 72 78 83 89 94 a g
24 3 35 40 46 51 57 62 68 73 79 84 9 95 b h
a中的
[…]
语法是每个字符的匹配,而不是数字范围<例如,code>[a-c]与[abc]
相同。一个块中可以有多个范围或单个字符,因此[a-cfh-k]
与[abcfhijk]
相同
因此[!0-99]
与[!01234567899]
相同(注意冗余的9
),而[!0-100]
与[!0100]
相同,因此只匹配0
s和1
s
您可以使用ls-d[!0-9]*
列出所有非数字目录,但我不知道有一种可靠的方法(使用globs和ls
)列出名称大于100的目录