Портативный способ получить размер файла (в байтах) в оболочке? - PullRequest
102 голосов
/ 29 ноября 2009

В Linux я использую stat --format="%s" FILE, но у Solaris, к которому у меня есть доступ, нет команды stat. Что мне тогда использовать?

Я пишу скрипты Bash и не могу установить в систему новое программное обеспечение.

Я уже рассмотрел использование:

perl -e '@x=stat(shift);print $x[7]' FILE

или даже:

ls -nl FILE | awk '{print $5}'

Но ни один из них не выглядит разумным - запуск Perl только для получения размера файла? Или запустить 2 команды, чтобы сделать то же самое?

Ответы [ 14 ]

0 голосов
/ 29 ноября 2009

В Solaris есть хитрость, которую я использовал, если вы запрашиваете размер более одного файла, он возвращает только общий размер без имен - поэтому включите пустой файл, например / dev / null, в качестве второго файла: 1001 *

например, командный файлyouwant / dev / null

Я не могу вспомнить, какая команда размера это работает для ls / wc / etc - к сожалению, у меня нет соляриса, чтобы проверить это.

0 голосов
/ 29 ноября 2009

Вы пробовали du ​​-ks | awk '{print $ 1 * 1024}'. Это может просто сработать.

0 голосов
/ 29 ноября 2009

если у вас есть Perl в Solaris, используйте его. В противном случае, следующая лучшая ставка - ls с awk, так как у вас нет stat или ваша находка не является GNU find.

0 голосов
/ 29 ноября 2009

на Linux вы можете использовать du -h $FILE, это тоже работает на солярисе?

...