从目录树列表中筛选特定行

时间:2013-12-19 09:04:20

标签: regex bash sed awk

我有以下目录列表:

    /home/a/b/c/d/5089/294265
    /home/a/b/c/d/5089/79783
    /home/a/b/c/d/41630
    /home/a/b/c/d/41630/293520
    /home/a/b/c/d/41630/293520/293520
...

我想只过滤7个目录深的行。在这个例子中,我只需要一行:/ home / a / b / c / d / 41630/293520/293520

请建议。 感谢

5 个答案:

答案 0 :(得分:2)

您可以使用grep。话说:

grep -P '(/[^/]*){8}' inputfile

将返回

/home/a/b/c/d/41630/293520/293520

不确定如何生成此商家信息,但如果您使用的是find,则可以通过指定-mindepth-maxdepth选项来控制深度。

答案 1 :(得分:2)

您可以尝试:

find /home/x/y/z/ -print | awk -F/ 'NF>8'

或者你可以试试

find /home/x/y/z/ -mindepth 7 -print

答案 2 :(得分:1)

YourInput | sed 's|/.|&|7;t
d' 

删除小于7“/”的行,后跟

答案 3 :(得分:0)

echo /home/a/b/c/d/*/*/*

应该这样做。

答案 4 :(得分:0)

使用awk

find /home| awk -F \/ 'NF==9' file