Відповісти

Увага: ця гілка була неактивною принаймні 365 днів!
Будь ласка, подумайте про створення нової гілки, якщо ви не впевнені абсолютно, що хочете відновити обговорення тут.
Ім’я:
Електронна пошта:
Тема:
Іконка:

Код перевірки:
Будь ласка, введіть символи, вказані на малюнку
прослухати / Спробувати інший малюнок

Будь ласка, введіть символи, вказані на малюнку:

скорочення: alt+s — надіслати допис, alt+p — попередній перегляд


Стислий вміст гілки

Автор: Володимир Лісівка
« : 2008-11-18 16:12:28 »

Угу, помилка в документації і в du --help. :-(

Та ніби нема помилки. Такий самий опис як і для самої команди du:
Цитата
Summarize disk usage of each FILE, recursively for directories.
Автор: Володимир Лісівка
« : 2008-11-18 16:07:18 »

Втім, в мене воно чогось теж не працює як треба:

[isbear:~] find library -type f -size +500k -print0 | du -s -h --files0-from=-
616K    library/albano peter/carrier1.html
616K    library/albano peter/carrier1.html~
...
996K    library/hue david ab and brad leenavivier/doom1.koi.txt
712K    library/hue david ab and brad leenavivier/doom2.koi.txt
[isbear:~]

хоча
Цитата: man du

       --files0-from=F
              summarize disk usage of the NUL-terminated file names specified in file F

Угу, помилка в документації і в du --help. :-(

Цитата з info du:
Цитата
‘--files0-from=FILE’
    Rather than processing files named on the command line, process those named in file FILE; each name is terminated by a null byte. This is useful with the --total (-c) option when the list of file names is so long that it may exceed a command line length limitation. In such cases, running du via xargs is undesirable because it splits the list into pieces and makes du print a total for each sublist rather than for the entire list. One way to produce a list of null-byte-terminated file names is with gnu find, using its -print0 predicate. Do not specify any FILE on the command line when using this option.

Тобто треба додати -c - в кінці буде виведено total. Ну а останній рядочок ми знаємо як показувати: :-)

find . -type f -size +500k -print0 | du -ch --files0-from=- | tail -1
Автор: Михайло Даниленко
« : 2008-11-17 16:33:13 »

$ find . -type f -size +500k -print0 | du -sh --files0-from=-
du: illegal option -- -
usage: du [-H | -L | -P] [-a | -s | -d depth] [-c] [-h | -k | -m] [-n] [-x] [-I mask] [file ...]

я ж то зовсім повний баран. що тут не так?
значить в BSD du це не підтримує...
Втім, в мене воно чогось теж не працює як треба:

[isbear:~] find library -type f -size +500k -print0 | du -s -h --files0-from=-
616K    library/albano peter/carrier1.html
616K    library/albano peter/carrier1.html~
...
996K    library/hue david ab and brad leenavivier/doom1.koi.txt
712K    library/hue david ab and brad leenavivier/doom2.koi.txt
[isbear:~]

хоча
Цитата: man du

       --files0-from=F
              summarize disk usage of the NUL-terminated file names specified in file F
Автор: marti88
« : 2008-11-17 15:39:52 »

$ find . -type f -size +500k -print0 | du -sh --files0-from=-
du: illegal option -- -
usage: du [-H | -L | -P] [-a | -s | -d depth] [-c] [-h | -k | -m] [-n] [-x] [-I mask] [file ...]


я ж то зовсім повний баран. що тут не так?
Автор: Володимир Лісівка
« : 2008-11-17 13:21:48 »

find . -type f -size +500k -print0 | du -sh --files0-from=-
Автор: marti88
« : 2008-11-17 08:11:32 »

Дякую. Буду юзати.

Хостер вимагає, щоб файлів розміром більше 500 кб було менше 10%. Треба міряти вручну. Дякую всім.
Автор: Kovyar
« : 2008-11-17 02:35:39 »

еге. так воно працює швидше на кілька порядків.
респект
Автор: Михайло Даниленко
« : 2008-11-17 00:22:54 »

можна не запускати кожного разу ls:
find . -type f -size +500k -ls | awk '{sum = sum + $7} END {print sum/(1024*1024)}'
Автор: Kovyar
« : 2008-11-17 00:14:37 »

отак:
find . -type f -size +500k -exec ls -l '{}'  \; | awk '{sum = sum + $5} END {print sum/(1024*1024)}'
Автор: marti88
« : 2008-11-16 23:25:09 »

Мені є задача - рахувати регулярно скільки місця займають файли котрі більші за 500Кб.


Мені написали таке: find . -type f -size +500k -exec ls -l '{}'  \; | awk '{sum = sum + $5} END {print sum/(1024*1024)}' | awk '{print $}'`

Виправте помилку чи запропонуйте свій варіант.  Дякую.