2010-08-28 4 views
6

Я пытаюсь получить размер каталогов верхнего уровня в текущем каталоге (в Solaris). Поэтому я соединяю du grep и хочу совместить только те строки, у которых есть одна косая черта, т.е. каталоги верхнего уровня.Как grep для строки, содержащей не более одной косой черты?

Что-то вроде:

du -h | grep -e <your answer here> 

но ничего Старается работы. Помогите оценить!

+0

Рассмотрите подобные проблемы в следующий раз http://unix.stackexchange.com ... – maxschlepzig

ответ

5
grep -e '^[^/]*/[^/]*$' 

Обратите внимание, что это соответствует строкам, имеющим ровно одну (не более одной) черту, но это должно быть хорошо для вашего использования.

Вы могли бы также, вероятно, сделать что-то с -s переключателем

du -hs */ 
+0

Да, они оба работают, спасибо. Хотя с grep, опция -v, приведенная ниже, немного легче запомнить ;-) – David

1

Это не ответ на ваш вопрос точно, но почему бы вам не спросить gdu, чтобы сделать это для вас?

gdu --max-depth=1 

Если вы действительно хотите пойти по пути grep, как насчет этого?

du -h| grep -v '/.*/' 

Это будет отфильтровывать линии с двумя или более косыми чертами, оставив вас с теми, у кого есть один или ноль.

+0

У вас нет gdu в Solaris:/Grep работает, спасибо. – David

+0

@ Давид: Я считаю, что 'du' имеет аналогичный переключатель –

3

Вы можете также соответствовать вещи, которые вы не хотите с опцией -v:

ptimac:Tools pti$ du | grep -v '/.*/' 
22680 ./960-Grid-System 
137192 ./apache-activemq-5.3.0 
23896 ./apache-camel-2.0.0 
386816 ./apache-servicemix-3.3.1 
251480 ./apache-solr-1.4.0 
345288 ./Community Edition-IC-96.SNAPSHOT.app 

(я проверил человека страницу Солярис первый в настоящее время ;-)

Есть другие способы в системах GNU для кожи, что кошки без использования регулярных выражений:

find . -d1 

находит все файлы/папки на глубине 1

и команда, которую я часто использую при уборке дома диска является:

du -d1 

или (и это должно работать на Solaris тоже)

du | sort -n 

, который показывает мне самые большие каталоги, где они находятся ниже Текущий каталог.

+0

, а затем передает его на' xargs gdu - max-depth = 0' –

+0

Да, grep -v работает, приветствует. du | sort -n тоже полезен. – David

Смежные вопросы