相关疑难解决方法(0)

将字节数转换为人类 KiB MiB 等的标准工具;喜欢 du, ls1

是否有标准工具可以将字节的整数计数转换为人类可读的最大可能单位大小计数,同时将数值保持在 1.00 和 1023.99 之间?

我有我自己的 bash/awk 脚本,但我正在寻找一个标准工具,它可以在许多/大多数发行版中找到......更普遍可用的东西,理想情况下有简单的命令行参数,和/或可以接受管道输入。

以下是我正在寻找的输出类型的一些示例。

    1    Byt  
  173.00 KiB  
   46.57 MiB  
    1.84 GiB  
   29.23 GiB  
  265.72 GiB  
    1.63 TiB  
Run Code Online (Sandbox Code Playgroud)

这是bytes-human脚本(用于上述输出)

awk -v pfix="$1" -v sfix="$2" 'BEGIN { 
      split( "Byt KiB MiB GiB TiB PiB", unit )
      uix = uct = length( unit )
      for( i=1; i<=uct; i++ ) val[i] = (2**(10*(i-1)))-1
   }{ if( int($1) == 0 ) uix = 1; else while( $1 < val[uix]+1 ) uix--
      num = $1 …
Run Code Online (Sandbox Code Playgroud)

utilities text-processing units

131
推荐指数
6
解决办法
6万
查看次数

有没有办法总结列出的文件的大小?

这是我用来列出一些文件的命令:

find . -name \*.extract.sys -size +1000000c -exec ls -lrt {} \;
-rw-r--r--   1 qa1wrk15   test       1265190 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_7.20110929.extract.sys
-rw-r--r--   1 qa1wrk15   test       1345554 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_2.20110929.extract.sys
-rw-r--r--   1 qa1wrk15   test       1370532 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_3.20110929.extract.sys
-rw-r--r--   1 qa1wrk15   test       1399854 Sep 29 01:14 ./var/can/projs/ar/rep/extract/Sep/29/ar.ARAB-PI_8.20110929.extract.sys
Run Code Online (Sandbox Code Playgroud)

等等。

现在我想通过总结第 5 列来计算这些文件的总大小。我想使用awk, 来做到这一点,所以我在特定目录中测试了以下内容

>ls -lrt | awk `{ print $1 }`
ksh: syntax error at line 1 : `{' unmatched
Run Code Online (Sandbox Code Playgroud)

我不明白有什么问题,为什么这个语法错误

我想试试

ls -lrt | awk …
Run Code Online (Sandbox Code Playgroud)

ksh hp-ux shell-script

21
推荐指数
4
解决办法
4万
查看次数

将颜色从 ls 通过管道传递到 awk 'print' 语句

这是我昨天提出的问题的后续,在目录列表中显示文件大小的总和

多亏了零比雷埃夫斯毛里茨汉森的正确方向,我现在有了

function dir() {
        ls -FaGl "${@}" | awk '{print; total += $4}; END {print "\t\ttotal: ",total/1024,"KB"}'
}
Run Code Online (Sandbox Code Playgroud)

在我的.bash_profile,它工作得很好。但是,至少在 Linux 上(我还没有机会在 OSX 上尝试它),我ssh在 XP 上使用 PuTTY,我的目录颜色现在不见了。有没有办法通过管道将颜色代码传递给 awkprint语句?

更新

感谢 Sukminder 的回答,添加--color=always可以解决问题,就像auto之前设置的那样。但是,我现在在目录列表的末尾和总行之间有一个空格:

[19:30:58 mattdmo@server ~/webapps/django15 ] $ dir
drwxr-xr-x  7 mattdmo 4096 Mar 24 20:28 ./
drwxr-xr-x 17 root    4096 Mar 18 20:15 ../
drwxr-xr-x  7 mattdmo 4096 Mar 14 …
Run Code Online (Sandbox Code Playgroud)

ls colors bash pipe awk

8
推荐指数
1
解决办法
4242
查看次数

标签 统计

awk ×1

bash ×1

colors ×1

hp-ux ×1

ksh ×1

ls ×1

pipe ×1

shell-script ×1

text-processing ×1

units ×1

utilities ×1