Автор Гілка: Підрахунок об'єму файлів більше Х кб  (Прочитано 14708 раз)

Відсутній marti88

  • Дописувач
  • **
  • дописів: 56
  • Карма: +0/-0
Мені є задача - рахувати регулярно скільки місця займають файли котрі більші за 500Кб.


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

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

Відсутній Kovyar

  • Кореспондент
  • ***
  • дописів: 130
  • Карма: +0/-0
  • Студент
Re: Підрахунок об'єму файлів більше Х кб
« Відповідей #1 : 2008-11-17 00:14:37 »
отак:
find . -type f -size +500k -exec ls -l '{}'  \; | awk '{sum = sum + $5} END {print sum/(1024*1024)}'
[Fedora 10 Cambridge] [Debian Lenny] [GNOME user]

Михайло Даниленко

  • Гість
Re: Підрахунок об'єму файлів більше Х кб
« Відповідей #2 : 2008-11-17 00:22:54 »
можна не запускати кожного разу ls:
find . -type f -size +500k -ls | awk '{sum = sum + $7} END {print sum/(1024*1024)}'

Відсутній Kovyar

  • Кореспондент
  • ***
  • дописів: 130
  • Карма: +0/-0
  • Студент
Re: Підрахунок об'єму файлів більше Х кб
« Відповідей #3 : 2008-11-17 02:35:39 »
еге. так воно працює швидше на кілька порядків.
респект
[Fedora 10 Cambridge] [Debian Lenny] [GNOME user]

Відсутній marti88

  • Дописувач
  • **
  • дописів: 56
  • Карма: +0/-0
Re: Підрахунок об'єму файлів більше Х кб
« Відповідей #4 : 2008-11-17 08:11:32 »
Дякую. Буду юзати.

Хостер вимагає, щоб файлів розміром більше 500 кб було менше 10%. Треба міряти вручну. Дякую всім.
marti-ua.info

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: Підрахунок об'єму файлів більше Х кб
« Відповідей #5 : 2008-11-17 13:21:48 »
find . -type f -size +500k -print0 | du -sh --files0-from=-
[Fedora Linux]

Відсутній marti88

  • Дописувач
  • **
  • дописів: 56
  • Карма: +0/-0
Re: Підрахунок об'єму файлів більше Х кб
« Відповідей #6 : 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 ...]


я ж то зовсім повний баран. що тут не так?
marti-ua.info

Михайло Даниленко

  • Гість
Re: Підрахунок об'єму файлів більше Х кб
« Відповідей #7 : 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

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: Підрахунок об'єму файлів більше Х кб
« Відповідей #8 : 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
[Fedora Linux]

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: Підрахунок об'єму файлів більше Х кб
« Відповідей #9 : 2008-11-18 16:12:28 »
Угу, помилка в документації і в du --help. :-(

Та ніби нема помилки. Такий самий опис як і для самої команди du:
Цитата
Summarize disk usage of each FILE, recursively for directories.
[Fedora Linux]