我有一些像这样的输出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
或sed
这样做,因为我不想使用比所需更复杂/难以使用的工具。
理想我希望它有足够能力去处理伴随大小B
,M
或K
后缀,并通过1
,1000000
和1000
据此相应地成倍增加。不过,我还没有找到一个好的方法来做到这一点。
我已经尝试了一些事情没有真正了解的最佳途径:
ls -alth | cut -f 5 -d \s+
我希望将工作,因为我可以只限定它一个或多个空格。
但这并不奏效。我如何提供一个正则表达式分隔符cut
?还是有更简单的方法来从ls -alth
只提取文件的大小?
我使用的是CentOS6.4
为什么不'LS -alth结果|切-d”“-f5' ..? –
我其实从来没有听说过这个选择。这是行不通的,因为它需要分割任意数量的空间。你的例子只在一个空间分裂。我在问题中增加了几条示例行,以使其更加清晰。 – guimption
好吧...那么'ls -alth | awk'{print $ 5}''?这在缺省情况下适用于任何空白区域。顺便说一下,即使在我的Debian中进行了剪切工作。 –