我有一些这样的输出ls -alth
:
drwxr-xr-x 5 root admin 170B Aug 3 2016 ..
drwxr-xr-x 5 root admin 70B Aug 3 2016 ..
drwxr-xr-x 5 root admin 3B Aug 3 2016 ..
drwxr-xr-x 5 root admin 9M Aug 3 2016 ..
现在,我想解析出170B
部分,这显然是人类可读格式的大小。我想用cut
or sed
,因为我不想使用比必要的更复杂/更难使用的工具。
理想情况下,我希望它足够强大来处理B
, M
or K
大小附带的后缀,并相应地乘以1
, 1000000
and 1000
因此。不过,我还没有找到一个好的方法来做到这一点。
我尝试了一些方法,但并不真正知道最好的方法:
ls -alth | cut -f 5 -d \s+
我希望这会起作用,因为我能够将其划定为一个或多个空格.
但这是行不通的。我如何供应cut
使用正则表达式分隔符?或者有没有更简单的方法来仅提取文件的大小ls -alth
?
我使用的是CentOS6.4
This answer tackles the question as asked, but consider George Vasiliou's helpful find solution https://stackoverflow.com/a/43312948/45375 as a potentially superior alternative.
cut
只支持一个single, 文字字符作为分隔符 (-d
),所以它不是正确的工具。
为了提取每行以可变数量的空格分隔的标记(字段),awk
是最好的工具,所以提出的解决方案乔治·瓦西里乌 https://stackoverflow.com/users/3988526/george-vasiliou最简单的是:
ls -alth | awk '{print $5}'
提取第 5 个空格分隔的字段 ($5
),即尺寸。
而不是使用-h
首先,然后重新转换人类可读的后缀(例如B
, M
, and G
)回到单纯的byte计数(顺便说一下,乘数必须是1024
, not 1000
),简单地省略-h
来自ls
命令,默认输出原始字节数:
ls -alt | awk '{print $5}'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)