在Linux中显示文件名的目录的通配符用法?

在Linux中显示文件名的目录的通配符用法?

所以我一直在研究的问题之一是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

相关内容