awk и ls
i386-asplinux-linux-gnu)
Доброе время суток!
Есть конструкция:
ls -l | somefile | awk '{ print $9 " размер: " $5 }'
Если в качестве somefile выступает папка, то выводится что то вроде:
somedir 4096
Если использовать вместо ls - du -m, то возвожна ситуация:
du -m Some\ bad\ named\ dir\ | awk ....
Тогда параметров у awk будет 6 (?) и нет ли способа получить имя папки в одну
переменную?
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 15091; Возраст листа: 540; Участников: 1320
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/297901
В сообщении от 1105828345 секунд после начала Эпохи Unix Вы написали:
Не проще `du -sh somefile' ?
А что еще должно выводится?
Прочему 6?
$ du -m Some\ bad\ named\ dir\ | awk '{print NF}'
5
$ du -m Some\ bad\ named\ dir\
0 Some bad named dir
^ ^ ^ ^ ^
1 2 3 4 5
В вашей задаче проще использовать du, как я показал выше.
Если нужен формат именно "<имя> размер: <размер_в_байтах>",
то можно так:
$stat -c "%n размер: %s"
А если нужно подсчитывать и размер каталогов:
$ du -sb Some\ bad\ named\ dir\ / |sed -r 's/^([0-9]+)\s+(.+)$/\2 размер:
\1/'