Как получить размер файла в BASH с читаемым размером не в байтах

Вот что у меня есть в моем файле оболочки:

FILENAME=/var/lib/backups/html-backup/backup-15-04-2016.tar.gz;
FILESIZE= $(ls -lah $FILENAME | awk '{ $FILESIZEINGB = $5}')
echo "Size is $FILESIZEINGB ."

Скажите, пожалуйста, почему я не вижу размер файла в читабельном виде?

Кажется, $ FILESIZEINGB не установлен, и я не могу видеть результат в выводе эха.

Заранее спасибо!

1
задан 15 April 2016 в 19:10

3 ответа

Вы не можете установить переменную оболочки от дочернего процесса - таким образом, установка FILESIZEINGB не работала бы так или иначе (и она не будет работать, потому что это означает что-то еще в awk синтаксис).

Просто использование du -h:

FILESIZEINGB=$(du -h "$FILENAME" | awk '{print $1}')

Также:

  • у Вас не должно быть пространства после =.
3
ответ дан 16 April 2016 в 05:10

Или если Вы не хотите использовать du:

FILESIZE=$(ls -lah $FILENAME | awk '{ print $5}')
echo "Filesize is $FILESIZE"
2
ответ дан 16 April 2016 в 05:10
  • 1
    @vidarlo я присоединил свое содержание/etc/apt/sources.list.Please, проверяют его.I haven' t бывший в состоянии для установки чего-либо через командную строку все это время – rohit choudhary 2 September 2017 в 18:08

Я нашел, что кто-то сделал остроту AWK, и она имела ошибку, но я зафиксировал ее. Я также добавил в петабайтах после терабайт.

FILE_SIZE=234234 # FILESIZE IN BYTES
FILE_SIZE=$(echo "${FILE_SIZE}" | awk '{ split( "B KB MB GB TB PB" , v ); s=1; while( $1>1024 ){ $1/=1024; s++ } printf "%.2f %s", $1, v[s] }')

Рассмотрение stat не находится в каждой системе, я использовал бы решение AWK. Пример; Raspberry Pi не имеет stat, но он действительно имеет awk.

1
ответ дан 16 April 2016 в 05:10

Другие вопросы по тегам:

Похожие вопросы: