我有一些这样的输出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 ..
Run Code Online (Sandbox Code Playgroud)
现在,我想解析出170B部分,这显然是人类可读格式的大小。我想使用cutor来做到这一点sed,因为我不想使用比必要更复杂/难以使用的工具。
理想情况下,我希望它足够健壮,可以处理大小附带的B,M或K后缀,并相应地乘以1,1000000并1000相应地。不过,我还没有找到一个好的方法来做到这一点。
我已经尝试了一些事情,但并不知道最好的方法:
ls -alth | cut -f 5 -d \s+
Run Code Online (Sandbox Code Playgroud)
我希望这会奏效,因为我可以在一个或多个空格上分隔它。
但这不起作用。如何提供cut正则表达式分隔符?或者有没有更简单的方法来只提取文件的大小ls -alth?
我正在使用 CentOS6.4
该答案解决了所问的问题,但将George Vasiliou 的有用find解决方案视为潜在的优越替代方案。
cut仅支持单个文字字符作为分隔符 ( -d),因此它不是正确的使用工具。
对于提取每行不同数量的空格分隔的标记(字段)awk是最好的工具,因此George Vasiliou提出的解决方案是最简单的:
ls -alth | awk '{print $5}'
提取第 5 个空格分隔的字段 ( $5),即大小。
与其-h先使用,然后再将人类可读的后缀(例如B, M, 和G)重新转换回纯字节数(顺便说一句,乘数必须是1024, not 的倍数1000),只需-h从ls输出原始字节数的命令中省略默认情况下:
ls -alt | awk '{print $5}'
| 归档时间: |
|
| 查看次数: |
9803 次 |
| 最近记录: |