使用grep过滤目录

时间:2013-05-03 16:34:31

标签: bash unix grep find directory

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

这样的结果就是我的结果:

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

但我不希望这些隐藏文件出现在列表中。执行find . -type d | grep -v ./.无效。在这种情况下,它仅显示.作为输出。

知道如何过滤掉这些隐藏文件夹吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

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

btw,find有选项regex,您可以考虑使用,以便保存grep cmd。

e.g。

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

答案 1 :(得分:0)

你忘了逃避你的模式。

.匹配任何字符。

\.匹配点字符。

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

如果您只想过滤基本级别的隐藏文件夹:

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

如果您要过滤掉所有深度的隐藏文件夹:

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