首页 > 解决方案 > UNIX如何多次解析目录中的文件列表

问题描述

我正在处理目录中的文件列表。我已经使用 awk 剪掉了特定的字段。接下来我想进一步削减文件。

我的命令是 ls /archive/gtx_rec_full | grep '2019-05-1' | awk '{print $5,$6,$7,$8}' | more

它返回一个类似的列表

9636502 2019-05-10 00:40 /archive/gtx_rec_full/GTX_20190608_1967_40431_236965.dat.gz 15915297 2019-05-10 01:39 /archive/gtx_rec_full/GTX_20190608_1967_40432_382768.dat.gz 10672671 2019-05-10 01:39 /archive/ gtx_rec_full/GTX_20190608_1967_40433_261926.dat.gz 17362746 2019-05-10 02:41 /archive/gtx_rec_full/GTX_20190608_1967_40434_418702.dat.gz 1335538​​1 2019-05-10 03:40 /archive/gtx_rec_full/GTX_20190608_1967_40435_323201.dat.gz

我想保留文件大小和时间戳,然后剪掉唯一的文件 ID,例如 40431、40432、40433 等。所以,我的新结果集如下所示:

9636502  05/10/2019 00:40   /archive/gtx_rec_full/40431
15915297 05/10/2019 01:39   /archive/gtx_rec_full/40432
10672671 05/10/2019 01:39   /archive/gtx_rec_full/40433
17362746 05/10/2019 02:41   /archive/gtx_rec_full/40434
13355381 05/10/2019 03:40   /archive/gtx_rec_full/40435

我不清楚如何做到这一点。任何人都可以提供一些建议吗?谢谢!

我正在使用 Red Hat Enterprise Linux Server, 7.5

标签: linuxshellunix

解决方案


我从你的评论中了解到,你想要

| sed -r 's/GTX.*_(.*)_[^_]*/\1/;s/\// /g'

(或者,当你对斜线感到困惑时)

| sed -r 's#GTX.*_(.*)_[^_]*#\1#;s#/# #g'

当您找到的解决方案不同时,请发布该解决方案并接受您自己的答案。
然后每个人都看到问题“完成”了。


推荐阅读