使用echo。?? *并显示所有隐藏文件,但不是。或者......自己

时间:2017-10-10 22:45:09

标签: unix filter sh glob

您好我正在学习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

如何完成命令?

1 个答案:

答案 0 :(得分:0)

这取决于您使用的shell,但在bash中,您可以执行以下操作(假设extglob已启用:shopt -s extglob):

echo .@(.?|[!.])*

@(...|...)是一种“或”模式。这匹配与..?*.[!.]*匹配的每个文件。

..?*匹配以..开头的文件,后跟至少一个其他字符。这将查找以..开头的所有名称,但..本身除外。

.[!.]*匹配以.开头的文件,后跟非.字符。这匹配所有“普通”隐藏文件(其第二个字符不是点)。

请注意,在您的示例中,所有文件均不以..开头,因此.[!.]*足以产生所需的输出。