2017-10-10 348 views
0

嗨,我正在学习unix,我想运行一个echo .??*,显示我的所有文件开始.,但不显示...使用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

'echo。*'做你想做的事吗? – Blorgbeard

+0

@Blorgbeard No. – melpomene

+0

不,回声*显示。 .. – OsmaK

回答

0

这取决于你使用的外壳,但在bash,那么你可以做以下(假设extglob启用:shopt -s extglob):

echo [email protected](.?|[!.])* 

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

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

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

请注意,在您的示例中,没有任何文件以..开头,因此.[!.]*就足以生成所需的输出。