您好我正在学习unix,我希望运行echo .??*
,以.
开头显示我的所有文件但不显示.
或..
我的意思是命令运行良好,但没有显示.a
.b
.c
个文件。
如果文件是
. .. .a .b .c .aa .bb .cc .aaa .abc a b c aaa bbb ccc
回声的输出必须是
.a .b .c .aa .bb .cc .aaa .abc
如何完成命令?
答案 0 :(得分:0)
这取决于您使用的shell,但在bash中,您可以执行以下操作(假设extglob
已启用:shopt -s extglob
):
echo .@(.?|[!.])*
@(...|...)
是一种“或”模式。这匹配与..?*
或.[!.]*
匹配的每个文件。
..?*
匹配以..
开头的文件,后跟至少一个其他字符。这将查找以..
开头的所有名称,但..
本身除外。
.[!.]*
匹配以.
开头的文件,后跟非.
字符。这匹配所有“普通”隐藏文件(其第二个字符不是点)。
请注意,在您的示例中,所有文件均不以..
开头,因此.[!.]*
足以产生所需的输出。