Требуется подсказка (не готовое решение). Пришла вот в голову мысль написать сценарий на bash, выводящий истинный размер всего, что лежит в указанном каталоге. Не спрашивайте зачем. Предполагаю, что нужно рекурсивно обойти сам катлог и все его содержимое, к обычным его файлам применить команду stat, ее вывод пропустить через sed, отфильтровав собтвенно размер каждого файла, и все это просуммировать.
Возможна ли другая логика, если да, то какая?
Решено: Истинный размер каталога
Модератор: Модераторы разделов
-
Славик
- Сообщения: 159
- ОС: AltLinux2.4 master
Решено: Истинный размер каталога
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: Решено: Истинный размер каталога
Код: Выделить всё
du -sh directory?
-
uptime
- Сообщения: 1661
- Статус: Drinker with computing problems
- ОС: kubuntu 8.04
Re: Решено: Истинный размер каталога
а что вы имеете в виду, говоря "истинный размер"? Размер файла или место, занимаемое им на диске?
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
The answer is blowin' in the wind.
-
Славик
- Сообщения: 159
- ОС: AltLinux2.4 master
Re: Решено: Истинный размер каталога
Я всегда говорил - век живи, век учись, и дураком помрешь.
Спасибо!!!
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу
-
Славик
- Сообщения: 159
- ОС: AltLinux2.4 master
Re: Решено: Истинный размер каталога
Я имел ввиду место, занимаемое на диске всем содержимым каталога. Размер файла для собственно каталога всегда 4096 байтов, хоть в консоли по ls -l, хоть в файловом менеджере. Konqueror, правда, считает этот размер, когда в контекстном меню выбераешь Свойства, но в сценарий эту фишку не вставишь.
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Решено: Истинный размер каталога
в общем и целом, как ни избито, но
du много чего умеет показывать про размеры файлов (и каталогов, естественно, тоже).man du
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
Славик
- Сообщения: 159
- ОС: AltLinux2.4 master
Re: Решено: Истинный размер каталога
Согласен. Ить иногда и знать бы, в какой ман заглянуть.
Что меня всегда разочаровывало в форточках, так это их "гибкость". Программы работают так, как они работают, и хоть процессором об стенку - большего от них не добьешся. А здесь, если хочешь видеть то, что ты хочешь видеть, то ты этого добьешся, если ты этого действительно хочешь. Скрипт этот я написал, грохнул вот сдуру, немножко не понравилось. Завтра с утречка восстановлю, покажу рабочий вариант, и тогда будет окончательно решено.
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу
-
Славик
- Сообщения: 159
- ОС: AltLinux2.4 master
Re: Решено: Истинный размер каталога
Уфф...
Это сообщение в основном для тех, кто будет читать потом. Новичкам, вроде меня, будет чуть больше информации к размышлению.
Как вчера и обещал:
Код практически не комментирован, все, что может быть непонятно есть в man bash. Не знаю, возможно можно проще или совсем по другому. В любом случае стоит пробовать писать такие программки, в процессе отладки узнаешь много о себе и о системе. Тем более, это не так сложно, как кажется.
Как говаривал Маэстро Титаренко - это не вокал, это только эскиз к вокалу.
Единственное, от чего я не смог избавиться, так это от ругательств du, когда она натыкается на недоступный каталог.
Теперь, наверное все, тема исчерпана, но если будут комментарии - я не против.
Спасибо всем!!!
Это сообщение в основном для тех, кто будет читать потом. Новичкам, вроде меня, будет чуть больше информации к размышлению.
Как вчера и обещал:
Код:
#!/bin/bash
# Сценарий выводит три характеристики для переданного
# аргумента. Если передано имя существующего
# обычного файла - выводится сообщение, что это
# обычный файл, размер файла и его имя.
# Если передано имя существующего каталога -
# построчно для каждого вложенного элемента все
# перечисленное выше. Недоступные для чтения элементы
# пропускаются и перечисляются отдельным списком.
# Обрабатываются только файлы и каталоги.
US_MES="
Использование:
`basename $0` -h
`basename $0` [файл|каталог]
"
usage() {
echo "$US_MES"
exit 0
}
[ -z "$1" ] && CURRENT=$(pwd)
[ "$1" == "-h" ] && usage
[ -z "$CURRENT" ] && CURRENT="$1"
if [ ! -e "$CURRENT" ]; then
echo "$CURRENT: Не существует!"
exit
fi
if [ -f "$CURRENT" ]; then
[ -r "$CURRENT" ] && echo "Обычный файл `du -h $CURRENT`" \
|| echo "$CURRENT: недоступен"
exit
fi
if [ -d "$CURRENT" ]; then
if [ -r "$CURRENT" ]; then
noread=''
echo "Каталог `du -sh $CURRENT`"
echo "Содержит:
"
for file in $CURRENT/*; do
if [ -f "$file" ]; then
if [ -r "$file" ]; then
echo "Обычный файл `du -h $file`"
else
noread="$noread$file"$'\n'
fi
fi
if [ -d "$file" ]; then
if [ -r "$file" ] && [ -w "$file" ] && [ -x "$file" ]; then
echo "Каталог `du -sh $file`"
else
noread="$noread$file"$'\n'
fi
fi
done
if [ ! -z "$noread" ]; then
echo "Недоступно:"
echo "$noread"
fi
else
echo "$CURRENT: Недоступно"
fi
fi
exit 0
Код практически не комментирован, все, что может быть непонятно есть в man bash. Не знаю, возможно можно проще или совсем по другому. В любом случае стоит пробовать писать такие программки, в процессе отладки узнаешь много о себе и о системе. Тем более, это не так сложно, как кажется.
Как говаривал Маэстро Титаренко - это не вокал, это только эскиз к вокалу.
Единственное, от чего я не смог избавиться, так это от ругательств du, когда она натыкается на недоступный каталог.
Теперь, наверное все, тема исчерпана, но если будут комментарии - я не против.
Спасибо всем!!!
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу
-
Andrew S
- Сообщения: 225
- Статус: экспериментатор
- ОС: Conrad-Gentoo
Re: Решено: Истинный размер каталога
-
Славик
- Сообщения: 159
- ОС: AltLinux2.4 master
Re: Решено: Истинный размер каталога
Andrew S писал(а): ↑30.06.2007 15:52Перенаправь поток ошибок:
Код: Выделить всё
du параметры 2>/dev/null
Совсем белый, горячий весь...
И ман смотрел не один раз, и помню, что так, и все равно тулю &2>/dev/null, и удивляюсь, откуда у меня фоновый процесс появляется???
Вот теперь окончательно все...
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
А. и Б. Стругацкие
Понедельник начинается в субботу