linux - 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 13355381 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
解决方案
我从你的评论中了解到,你想要
| sed -r 's/GTX.*_(.*)_[^_]*/\1/;s/\// /g'
(或者,当你对斜线感到困惑时)
| sed -r 's#GTX.*_(.*)_[^_]*#\1#;s#/# #g'
当您找到的解决方案不同时,请发布该解决方案并接受您自己的答案。
然后每个人都看到问题“完成”了。
推荐阅读
- postgresql - 将 PostgreSQL 连接到现有的 GIS 地理数据库
- string - 替换 ksh 脚本中路径中的目录名称
- java - 数据 null onActivityResult
- emscripten - Emscripten - 如何从 C 到 JavaScript 获取 uint8_t 数组?
- python - 如何在一段文本中搜索单词列表,一旦找到,添加到字典
- ansible - 是否有将日期字符串转换为纪元的 ansible 函数
- keras - 如何在 keras 生成器中使用 NN?
- julia - 在 Julia 中使用 ForwardDiff 时限制函数签名
- java - HTML 按钮,apache.http.client。向它发送 post 请求
- .htaccess - 如何重定向包含百分号的单个 URL?