所以我一直在研究的问题之一是files
通过使用通配符显示目录的内容确实显示特定内容,在这种情况下,目标是使用ls
,而我迷失的部分是我需要显示 stat 的文件名,a
但是排除所有有aa
.然而它可以是ab
。
任何提示,如果我发现任何东西,我都会继续寻找并发布并回答,并且任何有关使用通配符的帮助都会很棒。谢谢
答案1
要匹配以以下开头a
但不包含aa
任何位置的文件名,
与zsh -o extendedglob
,你会使用~
除了操作员:
ls -ld a*~*aa*
和bash -O extglob -O failglob
:
ls -ld !(!(a*)|*aa*)
答案2
在 shell 中执行具有多个条件的复杂文件 glob 是很困难的。这样做更容易使用find
:
find files -maxdepth 1 -name 'a*' ! -name '*aa*' -type f -print
这将输出目录中files
以 开头a
但不包含子字符串的任何常规文件的路径名aa
。
要获得ls -l
行为,请更改-print
为-ls
.
答案3
我找到的答案是ls a[!a]*
这将允许我找到一个单词a
作为第一个字符,但什么也没有aa