如何拒绝 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),所以整个模式会匹配

c1c2cacloverc12cSc@:,.,

但不是

ccscs1cs101csience.

您可以在 the Bash manual 中找到更多详细信息。