2013-12-19 5 views
2

У меня есть следующий список каталогов:фильтра конкретные строки из дерева каталогов списка

/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

Просьба предложить. Thanks

ответ

2

Вы можете использовать grep. Высказывание:

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

вернется

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

Не знаете, как вы создаете этот список, но если вы использовали find вы можете контролировать глубину, указав -mindepth и -maxdepth варианты.

+0

Я создал список, используя: find/home/x/y/z/-print> out.txt – anarchist

2

Вы можете попробовать:

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

или вы могли бы попробовать

find /home/x/y/z/ -mindepth 7 -print 
1
YourInput | sed 's|/.|&|7;t 
d' 

удалить строку с менее чем 7 "/", а затем что-то

0

Использование awk:

find /home| awk -F \/ 'NF==9' file 
Смежные вопросы