Видео смотреть бесплатно

Смотреть вудман видео

Официальный сайт seoturbina 24/7/365

Смотреть видео бесплатно

15.10.09 23:00 digiwhite

Скрипты на bashОпределение размера заданных файлов в заданной директории

На работе недавно встал вопрос - узнать размер, занимаемый только исходными кодами в проекте. В общем-то вроде все просто, но в то же время, лично, никогда передо мной такой вопрос не стоял.

Подумав немножко, написал следующий скрипт:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#
!/bin/bash

size=0
temp_file="sizes.tmp"

find $1 -maxdepth 1 -type f -name "$2" -fprintf $temp_file %s'\n' \
 
sizes=`cat ${temp_file}`
 
for i in $sizes ; do
    let size=$size+i
done
 
rm $temp_file

printf %s "Total size is $size bytes, "
let ksize=$size/1024
printf %s "$ksize kbytes, "
let msize=$ksize/1024
printf %s "$msize mbytes"


После чего, например вызываем так (пусть скрипт носит название size.sh):
1
2
[digiwhite@*** ~]$ chmod og+x size.sh
[digiwhite@*** ~]$ ./size.sh ~/wallpapers \*.jpg

В результате получаем размер, занимаемый файлами с расширением jpg в каталоге ~/wallpapers.

Теперь рассмотрим по строчкам, что делает скрипт:
  • #1 - тут и так все ясно, указываем интерпритатор сценария;

  • #4 - переменная, которая будет хранить размер в байтах;

  • #5 - переменная, которая хранит имя временного файла, в который будут заноситься размеры;

  • #7 - самая основная строка - с помощью утилиты find мы вполняем поиск в директории, заданной первым параметром при вызове скрипта. Параметр maxdepth ограничивает глубину сканирования 1 уровнем (можно убрать этот параметр и будут сканироваться все подкаталоги, начиная от заданного). Параметр -type f говорит утилите искать только файлы (симлинки будут пропускаться). Параметр -name "$2" определяет маску поиска, так же задаваемую во время вызова скрипта. -fprintf $temp_file %s'\n' указывает утилите find, что для каждого найденного файла выполнить печать его размера в файл, указанный в переменной $temp_file, при этом размер каждого файла будет находиться на новой строке;

  • #8 - получаем размеры всех найденных файлов;

  • #10-#12 - в цикле проходим по каждой записи (каждый размер файла) и суммируем их друг с другом;

  • #14 - удаляем временный файл, т.к. он больше не нужен;

  • #16-#20 - выводим результат в различных еденицах измерения информации


Такой вот способ. Вероятно способ несколько сложен, но тем не менее, мне он подошел :).



philosoft 15.10.09 23:59 # +5
Первое, что пришло в голову:
1
2
3
4
5
6
7
8
9
10
11
$ ls
002.jpg  058.jpg  096.jpg   143.jpeg  196.jpg  301.jpg  343.jpg  379.jpg
020.jpg  065.jpg  101.jpg   144.jpg   215.jpg  302.jpg  344.jpg  380.jpg
024.jpg  072.jpg  117.jpg   152.jpg   260.jpg  303.jpg  361.jpg  5.jpg
025.jpg  073.jpg  124.jpg   153.jpeg  269.jpg  304.jpg  363.jpg  проч
036.jpg  080.jpg  129.jpeg  164.jpg   276.jpg  316.jpg  367.jpg
044.jpg  089.jpg  12.jpg    175.jpg   287.jpg  324.jpg  377.jpg
047.jpg  092.jpg  133.gif   195.jpg   290.jpg  336.jpg  378.jpg
$ du -ch `find . -maxdepth 1 -type f -iname \*jpg` | grep итого
18M     итого
 
digiwhite 16.10.09 00:12 # +0
Кстати, ваш вариант зависим от локализации ;) :-P
iglezz 16.10.09 00:27 # +2
$ du -ch `find . -maxdepth 1 -type f -iname \*jpg` | tail -n 1

:)
digiwhite 16.10.09 00:29 # +0
Завтра посмотрю, есть ли в QNX4 утилита du.
digiwhite 16.10.09 00:05 # +0
Тоже вариант :) Думал как сделать в одну строчку, но про du не знал. На самом деле есть еще более простой вариант - через ls.
xT 16.10.09 00:06 # +0
что мешает просто
du -ch /var/log/*.log | grep total
?
xT 16.10.09 00:15 # +2
du -ch /var/log/*.log | tail -n 1
независим от локализации)))
hello 16.10.09 00:08 # +2
du -ch --max-depth=1 *.jpg
xT 16.10.09 00:09 # +2
* - это автоматически --max-depth=1
=)
hello 16.10.09 00:11 # +0
а, тогда еще лучше
digiwhite 16.10.09 00:09 # +0
У меня на самом деле стояла задача познать суммарный размер *.h, *.c, *.sh файлов. В этом случае больше find подходит.
Username 16.10.09 00:22 # +0
find будет искать каждый файл - медленно. Лучше уж грепать нужные типы файлов
digiwhite 16.10.09 00:26 # +0
Не осознал, что вы хотите грепать?
hayao 17.10.09 08:57 # +0
du -ch *.{h,c,sh} | tail -n 1
digiwhite 17.10.09 15:13 # +0
В qnx это не работает.

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 150)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 2996 из 223 городов)
            Топ пользователей Топ блогов
            welinux.ru

            Смотреть онлайн бесплатно

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн