如何拒绝 bash 中的角色?
How do I reject a character in bash?
我举两个例子:
示例 1,
touch {a..z}
ls
a b c d e f g h i j k l m n o p q r s t u v x w y z
但我想拒绝n
a b c d e f g h i j k l m "" o p q r s t u v x w y z
例子2,(我真正想做的)
ls
c1 c-2 ca4 cA5 cs1 cs2 cs3 cs4 cs5
rm c* #but not starting with "cs"
在示例 1 中,我并不是要模棱两可,我想要的是:
rm c*(!s) #this command will give an error, but I want to remove all strings starting with "c", not "cs"
如何拒绝角色?
您似乎在寻求模式匹配方面的解决方案,因此否定字符 class 非常符合要求:
rm c[^s]*
[^s]
只匹配除s
以外的一个字符(包括大写S
),所以整个模式会匹配
c1
、c2
、ca
、clover
、c12
、cS
、c@:,.
、等,
但不是
c
、cs
、cs1
、cs101
或 csience
.
您可以在 the Bash manual 中找到更多详细信息。
我举两个例子:
示例 1,
touch {a..z}
ls
a b c d e f g h i j k l m n o p q r s t u v x w y z
但我想拒绝n
a b c d e f g h i j k l m "" o p q r s t u v x w y z
例子2,(我真正想做的)
ls
c1 c-2 ca4 cA5 cs1 cs2 cs3 cs4 cs5
rm c* #but not starting with "cs"
在示例 1 中,我并不是要模棱两可,我想要的是:
rm c*(!s) #this command will give an error, but I want to remove all strings starting with "c", not "cs"
如何拒绝角色?
您似乎在寻求模式匹配方面的解决方案,因此否定字符 class 非常符合要求:
rm c[^s]*
[^s]
只匹配除s
以外的一个字符(包括大写S
),所以整个模式会匹配
c1
、c2
、ca
、clover
、c12
、cS
、c@:,.
、等,
但不是
c
、cs
、cs1
、cs101
或 csience
.
您可以在 the Bash manual 中找到更多详细信息。