- Помогите написать скрипт с использованием du и сложениями, phpcoder, 13:02 , 01-Сен-09 (1)
>Не пойму как по отдельной директории вытаскивать и потом всё это складывать.Возможно, что стоит вычислять размер в байтах -- их складывать и потом уже переводить в человеко-читаемую форму (или вовсе так и оставлять в байтах).
- Помогите написать скрипт с использованием du и сложениями, akiri4, 10:25 , 02-Сен-09 (3)
>>Не пойму как по отдельной директории вытаскивать и потом всё это складывать. > >Возможно, что стоит вычислять размер в байтах -- их складывать и потом >уже переводить в человеко-читаемую форму (или вовсе так и оставлять в >байтах). Pahanivo, в общем то прав. Вот чуть детально (если я конечно правельно вас понял): #!/bin/sh find /usr/local/etc -type d -name "rc.d" -print | du -d5 -h | awk '{print $1}' | xargs (директория поиска) (шаблон поиска) ( -d глубина вложенности) -n1 echo "dir1" По поводу подсчета: awk '{total +=$1}; END {print total}' (смотрит первое поле) Если что то не понятно, пиши попробуем разобраться, по крайней мере тебе будет куда копать и что искать.
- Помогите написать скрипт с использованием du и сложениями, Pahanivo, 10:27 , 02-Сен-09 (4)
>[оверквотинг удален] >(директория поиска) (шаблон поиска) >( -d глубина вложенности) >-n1 echo "dir1" > > >По поводу подсчета: awk '{total +=$1}; END {print total}' > (смотрит первое поле) > >Если что то не понятно, пиши попробуем разобраться, по крайней мере тебе >будет куда копать и что искать. Уважаемый, дайте товарисчу хоть чуток напряч извилины. Он ведь даже попытки не сделал )
- Помогите написать скрипт с использованием du и сложениями, akiri4, 10:36 , 02-Сен-09 (5)
>[оверквотинг удален] >> >> >>По поводу подсчета: awk '{total +=$1}; END {print total}' >> (смотрит первое поле) >> >>Если что то не понятно, пиши попробуем разобраться, по крайней мере тебе >>будет куда копать и что искать. > >Уважаемый, дайте товарисчу хоть чуток напряч извилины. Он ведь даже попытки не >сделал ) Да ладно тебе ;) я очень приблизительно написал. Будем считать, что это маленький намек, чтобы человек не потерял энтузиазм к решению проблемы )))
- Помогите написать скрипт с использованием du и сложениями, Im27th, 11:24 , 02-Сен-09 (6)
Думаете я извилины не нарягаю?Я пришёл на новую работу, а мне тут сразу и Oracle мониторить, и испытать как работает Solaris 8 в контейнере Solaris 10, и изучить lustre и samfs, и ещё скрипты писать - времени ваще нету и облажаться тоже не хочется. Поэтому и прошу помощи.
- Помогите написать скрипт с использованием du и сложениями, Pahanivo, 14:25 , 01-Сен-09 (2)
man find, xargs, du, awk, csh - Помогите написать скрипт с использованием du и сложениями, ACCA, 00:04 , 04-Сен-09 (13)
Не нужно писать подсуммы с перестановками на shell, в Solaris для этого есть Perl.du -s */* | perl -e 'while (<>) { ($s,$d1, $d2) = split /[\s\/]+/; $size{$d2}{$d1} = $s; $size{$d2}{"\rTOTAL"}+= $s; } foreach $d2 (keys %size) { foreach $d1 (sort keys %{$size{$d2}}) {print "\t$d1 $d2 $size{$d2}{$d1}\n";}}'
- Помогите написать скрипт с использованием du и сложениями, Im27th, 10:02 , 04-Сен-09 (15)
>Не нужно писать подсуммы с перестановками на shell, в Solaris для этого >есть Perl. > >du -s */* | perl -e 'while (<>) { ($s,$d1, $d2) = split /[\s\/]+/; $size{$d2}{$d1} = $s; $size{$d2}{"\rTOTAL"}+= $s; } foreach $d2 (keys %size) { foreach $d1 (sort keys %{$size{$d2}}) {print "\t$d1 $d2 $size{$d2}{$d1}\n";}}'Perl - классно. Попробую разобраться. А пока что вот что вышло (тестирую на CentOS): find /dir1/data -maxdepth 1 -mindepth 1 -type d | cut -d/ -f4 > 1.txt; j=`cat 1.txt | wc -l` i=1 for i in {1,2,3} do CURDIR=`head -n $i 1.txt | tail -1` du -k -s -c /dir*/data/$CURDIR done Теперь: 1. В Solaris нет maxdepth mindepth 2. В Solaris нет du -c 3. Не могу сделать нормальный цикл - как сделать, чтобы было не for i in {1,2,3} а for i и количество циклов раное j 4. Пока разбираюсь с этим - следующим пунктом народу захотелось, чтобы ещё напротив каждого каталога стояла время последней его модификации. Я понимаю, что надо что-то типа ls -lc, но как бы одну дату вытащить без всей мишуры? Или опять заталкивать в файл и обрезать?
- Помогите написать скрипт с использованием du и сложениями, Im27th, 15:59 , 04-Сен-09 (17)
O! Замутил!find /dir1/data -maxdepth 1 -mindepth 1 -type d | cut -d/ -f4 > spisok.txt; j=`cat spisok.txt | wc -l` i=1 a=1 for i in {1,2,3} do CURDIR=`head -n $i spisok.txt | tail -1` echo "Проект $CURDIR" du -k -s -c /dir*/data/$CURDIR > du$i.txt ls -dlc /dir*/data/$CURDIR > ls$i.txt cut -f2 du$i.txt > dir$i.txt cut -b8-10 dir$i.txt > subdir$i.txt cut -f1 du$i.txt > size$i.txt cut -b29-44 ls$i.txt > date$i.txt for a in {1,2,3} do head -n $a subdir$i.txt | tail -1 > onedir$a.txt head -n $a size$i.txt | tail -1 > onesize$a.txt head -n $a date$i.txt | tail -1 > onedate$a.txt VIVOD=`cat onedir$a.txt onesize$a.txt onedate$a.txt` echo $VIVOD rm onedir$a.txt rm onesize$a.txt rm onedate$a.txt done echo rm du$i.txt rm ls$i.txt rm dir$i.txt rm subdir$i.txt rm size$i.txt rm date$i.txt done rm spisok.txt Только вот с циклом так и не разобрался. У меня ведь неизвестное и меняющееся количество поддиректорий.
- Помогите написать скрипт с использованием du и сложениями, Im27th, 14:07 , 14-Сен-09 (18)
O! Какая хрень получилась find /bigsan0/data -maxdepth 1 -mindepth 1 -type d | cut -d/ -f4 > spisok.txt; SUBDIR=`find /bigsan0/data -maxdepth 1 -mindepth 1 -type d | cut -d/ -f4` j=`cat spisok.txt | wc -l` i=1 for files in ${SUBDIR}/* do CURDIR=`head -n $i spisok.txt | tail -1` echo "Проект $CURDIR" du -k -s -c /bigsan*/data/$CURDIR > du$i.txt ls -dlc /bigsan*/data/$CURDIR > ls$i.txt cut -f2 du$i.txt > dir$i.txt cut -b1-8 dir$i.txt > subdir$i.txt cut -f1 du$i.txt > size$i.txt cut -f7-10 -d' ' ls$i.txt > date$i.txt a=1 b=`cat subdir$i.txt | wc -l` c=`cut -b1-8 dir$i.txt` #for a in {1,2,3,4} for word in ${c} do head -n $a subdir$i.txt | tail -1 > onedir$a.txt head -n $a size$i.txt | tail -1 > onesize$a.txt head -n $a date$i.txt | tail -1 > onedate$a.txt VIVOD=`cat onedir$a.txt onesize$a.txt onedate$a.txt` echo $VIVOD #echo $i #echo $j #echo $a rm onedir$a.txt rm onesize$a.txt rm onedate$a.txt a=`expr ${a} + 1` done echo rm du$i.txt rm ls$i.txt rm dir$i.txt rm subdir$i.txt rm size$i.txt rm date$i.txt i=`expr ${i} + 1` done rm spisok.txt
|