从`ls`删除前3列?

时间:2018-03-21 10:02:04

标签: linux bash awk cut

如果我ls -o

-rw-rw-r-- 1 louise     347967 Aug 28  2017 Screenshot from 2017-08-28 09-33-01.png
-rw-rw-r-- 1 louise     377739 Aug 29  2017 Screenshot from 2017-08-29 10-39-49.png
-rw-rw-r-- 1 louise     340682 Aug 29  2017 Screenshot from 2017-08-29 10-40-02.png

我真的想删除前3列,所以我得到了

347967 Aug 28  2017 Screenshot from 2017-08-28 09-33-01.png
377739 Aug 29  2017 Screenshot from 2017-08-29 10-39-49.png
340682 Aug 29  2017 Screenshot from 2017-08-29 10-40-02.png
看来,

ls无法做到这一点。关于删除多个列,还有其他问题,但不是从头开始。

1 个答案:

答案 0 :(得分:4)

JSONObject ratingsObj=reviewsObj.getJsonObject("ratings");是一个互动工具,其输出为not supposed to be parsed

考虑使用替代工具,例如ls(推荐GNU版本):

stat

输出不完全相同,但您可以完全控制格式。 stat -c '%s %y %n' * 提供了有关可能的格式序列的更多信息。

使用GNU stat,您还可以使用stat --help在格式字符串中添加换行符,例如换行符或制表符,以便于解析:

--printf

stat --printf '%s\t%Y\t%n\n' * (最后修改,自Epoch以来的秒数)比%Y(人类可读)更适合解析。

如果文件名包含换行符,这仍然会中断,因此根据您计划使用此信息的方式,您可能希望在结尾处使用%y而不是\0格式字符串和进程记录以空字节而不是换行符结束。

或者,您可能会发现循环浏览文件并逐个调用\n,提取所需内容更容易:

stat

假设您使用基于循环的方法,您可以使用for file in *; do read -r size modified name < <(stat '%s %Y %n' "$file") # do whatever with $size, $modified and $name here done 将日期转换为您想要的任何格式,例如:

date