Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: [Bash]: Проверка размера объекта против заданного значения [решено]  (Прочитано 6140 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн desktop user

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Посоветуйте пожалуйста как можно в bash проверить размер объекта (файл или папка) против заданного, при этом коды выхода операции будут различаться, если размер больше/меньше заданного значения.

Например, в Виндосе можно это сделать с помощью спец. утилиты коммандной строки diruse:
diruse.exe /m /q:700 /o "some_file_or_folder"

(в этом случае проверяется, превышает ли объект размер в 700 мегабайт, и, если не превышает, то код выхода 0, иначе >= 1).
« Последнее редактирование: 25 Декабря 2008, 00:54:26 от desktop user »
все еще Ubuntu 8.10 т.к. https://bugs.launchpad.net/ubuntu/+bug/117713

Оффлайн Saha

  • Активист
  • *
  • Сообщений: 517
    • Просмотр профиля
Как-то так  :coolsmiley:

#!/bin/sh

if  [ $(stat -c %s /home/user/file) -lt 700 ]
then
      exit 0
else
      exit 1
fi

Оффлайн desktop user

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Спасибо, но че-то не получается.. для проверки задал следующее:
#!/bin/sh

if  [ $(stat -c %s /home/user/my_file.rar) -lt 700 ]
then
      touch /home/user/VARIANT_1
      exit
else
      touch /home/user/VARIANT_2
      exit
fi
my_file.rar имеет размер 60 мб... в результате выполнения кода ^ был создан файл VARIANT_2.

После удалил VARIANT_2, запустил следующий скрипт:
#!/bin/sh

if  [ $(stat -c %s /home/user/my_file.rar) -lt 30 ]
then
      touch /home/user/VARIANT_1
      exit
else
      touch /home/user/VARIANT_2
      exit
fi
 
В результате выполнения был создан файл VARIANT_2 (опять).

Несмотря на то, что в одном случае размер файла my_file.rar не превышает заданного значения (60 < 700), а в другом случае превышает (60 > 30) - результат одинаков (выполняется else и последующие команды)...
 :-\
все еще Ubuntu 8.10 т.к. https://bugs.launchpad.net/ubuntu/+bug/117713

Оффлайн Saha

  • Активист
  • *
  • Сообщений: 517
    • Просмотр профиля
прямо так и написал
stat -c %s /home/user/my_file.rar ???
 :2funny:

шучу...

А вообще, stat - это команда, ее можно из консоли выполнить.
Соответственно
stat -c %s /home/user/fileвыдаст размер файла в байтах. Если файла нет, то будет ошибка.

P.S.  Размер в байтах, так что у тебя в обоих случаях 60Мб усегда больше 700 байт  ;)
« Последнее редактирование: 25 Декабря 2008, 00:37:13 от Saha »

Оффлайн desktop user

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Размер в байтах, так что у тебя в обоих случаях 60Мб усегда больше 700 байт  ;)
Виноват, решил с ходу вставить код в скрипт и проверить :)
...Попробую еще. Спасибо ;)
все еще Ubuntu 8.10 т.к. https://bugs.launchpad.net/ubuntu/+bug/117713

Оффлайн desktop user

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Saha , спасибо тебе огромное, усе получается  :angel:
...особенно обрадовало что вместо #!/bin/sh работает также и с #!/bin/bash
« Последнее редактирование: 26 Декабря 2008, 00:35:35 от desktop user »
все еще Ubuntu 8.10 т.к. https://bugs.launchpad.net/ubuntu/+bug/117713

 

Страница сгенерирована за 0.062 секунд. Запросов: 22.