2013-05-03 70 views
0

我使用find . -type d来列出文件夹中的所有目录。现在说我在我的home文件夹中。使用grep来过滤目录

之类的东西,这是我的结果:

. 
./.cache 
./.config/junk 
./Documents 
./Downloads 
./.local/share/junk1 
./.local/share/junk2 
./.mozilla/junk1 
./Pictures 
./Videos 

然而,我不希望这些隐藏的文件出现在列表中。做find . -type d | grep -v ./.不起作用。在这种情况下,它仅显示.作为输出。

任何想法如何过滤掉这些隐藏的文件夹?

+0

'.'匹配任何字符,使用'/ \。' – Kevin 2013-05-03 16:37:54

回答

1

试试这个:

find ...|grep '^./[^.]' 

顺便说一句,find有选项regex,你可以考虑使用,使保存grep CMD。

例如

find . -type d -a -regex '^./[^.].*' 
0

你忘了逃避你的模式。

.匹配任何字符。

\.匹配点字符。

^exp匹配以exp开头的模式。

如果你想在只有基本水平,筛选出隐藏的文件夹:

find . -type d | grep -v '^\./\.'

如果你想在所有深度过滤掉隐藏文件夹:

find . -type d | grep -v '/\.'