0 我试图回答一个专注于Linux / Unix的COSC类的问题。 我正在使用Linux与bash shell。我是9月份的Linux新手。 我的导师在本周的作业中有这个问题,并且基于课堂讨论,它从包括在内,而不是包括在内。我花了很长时间才真正想要这个。 我提出的命令没有考虑文件的名称是否以偶数位开头,后跟另一位使用通配符的数字。这是问题被包括在或被排除在任务之外的关键点,我已经坐了好几个小时试图解决这个问题。 它甚至可能吗? 我提出了: echo [!02468][a-zA-Z]* 任何建议都受到欢迎和非常感谢。 command-line bash wildcards echo — 凯莉拉莫尔格 source
2 您还可以执行以下操作 shopt -s extglob echo !([02468][a-zA-Z]*) shopt -u extglob 您需要启用extglob与shopt -s extglob第一。 之后你可以再次禁用它shopt -u extglob。 extglob shell选项在命令行中为您提供更强大的模式匹配。 — 里克 source
0 我认为用简单的命令是不可能的。以下应该可以做到这一点: for i in *; do case "$i" in [02468][a-zA-Z]*) ;; # do nothing *) echo "$i" ;; esac done — 迈克尔苏尔曼 source 我其实刚刚想出来的!回声[0-9] * | xargs echo [!02468] [a-zA-Z] *感谢您的回复。你让我以不同的方向思考! — Kelly La Morge 2013年 这根本不起作用。如果没有文件匹配[0-9] *,它将按字面传递给xargs并出现在输出中。像2.txt这样的文件会被遗漏。像11.txt这样的文件会被遗漏。 — 迈克尔苏尔曼2013年
0 @ Rik使用的解决方案extglob可能是最好的方法bash。如果你需要一个与shell无关的方式(假设你正在使用GNU find),试试这个: find . -type f -not -name "[02468][a-zA-Z]*" — terdon source