Tar

tar --list -v 可以以人類可讀的格式列出文件大小嗎?

  • October 28, 2020

我想詳細列出tar文件的成員,並以人類可讀的格式而不是字節顯示文件大小,是否tar可以選擇這樣做?

沒有內置tar選項,但您可以過濾其輸出。例如,使用人性化

#!/usr/bin/env python

import fileinput
import humanize

for line in fileinput.input():
   (perm, owner, size, date, time, filename) = tuple(line.split())
   print '{0} {1} {2:>9} {3} {4} {5}'.format(perm, owner, humanize.naturalsize(size, gnu=True), date, time, filename)

將此另存為eg humantvf,然後

tar tvf ... | ./humantvf

你可以awk一起使用numfmt

tar --list --verbose --file myfiles.tar.gz | \
   awk '{ \
       "numfmt --to=iec-i --format=%7.f --suffix=B " $3 | getline x; \
       $3=x; \
       print $0 \
   }'

這會修改第三列(即文件大小列),將字節數替換為從numfmt.

結果:

-rw-r--r-- user/user   16KiB 2020-01-01 12:34 pics/camel.jpg
-rw-r--r-- user/user    2KiB 2019-12-01 12:34 pics/cat.jpg
-rw-r--r-- user/user  410KiB 2019-12-01 12:34 pics/panda.jpg
-rw-r--r-- user/user    2KiB 2019-12-01 12:34 pics/unicorn.gif
# ...

請注意,這numfmt是特定於 GNU coreutils 的。它從 GNU coreutils 8.21(2013 年初發布)開始可用。

引用自:https://unix.stackexchange.com/questions/326977