此命令的结果(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 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
答案 0 :(得分:2)
glob中的[...]
语法是每个字符的匹配,而不是数字范围。例如,[a-c]
与[abc]
相同。您可以在一个块中包含多个范围或单个字符,因此[a-cfh-k]
与[abcfhijk]
相同。
因此[!0-99]
与[!01234567899]
相同(请注意冗余9
),而[!0-100]
与[!0100]
相同,因此仅匹配{{ 1}}和0
。
您可以使用1
列出所有非数字目录,但我不知道有一种健壮的方法(带有glob和ls -d [!0-9]*
)可以列出名称大于100的目录