【发布时间】:2018-03-19 06:38:24
【问题描述】:
如果我想在一个单一目录中识别 Unix 中的模式,我可以知道哪个 unix 实用程序会有所帮助(如 awk)
输入:
$ ls
a_20171007_001.txt
a_20171007_002.txt
b_20171007_001.txt
c_20180101_001.txt
期待输出:
a_20171007_002.txt
b_20171007_001.txt
- 无论文件创建时间如何,输出都应根据文件名返回最新版本的文件
- 输出文件不应包含未来日期文件(例如,当前日期:20171008,因此 20180101 不应出现在输出中)
关于如何在 unix(awk 或 sed)中轻松实现这一点的任何建议
非常感谢您提供的所有解决方案。但不幸的是,如果文件名不遵循任何模式,则无济于事。
例如,输入:
ab_bc_全部_20171008_001.txt
bc_cd_ad_全部_20171008_001.txt
ab_bc_全部_20171008_002.txt
ad_dc_cd_ed_全部_20180101_001.txt
ae_bc_zx_ed_ac_全部_20170918_001.txt
输出:
bc_cd_ad_all_20171008_001.txt
ab_bc_all_20171008_002.txt
ae_bc_zx_ed_ac_all_20170918_001.txt
在上述情况下,只有在 'all' 之后出现日期字段的模式。 您能否在上述情况下提出建议..
提前致谢。
【问题讨论】:
-
你的版本号可以有4位数字吗?如果是,它们是否仅在 999 之后开始?例如。
a_20171007_999.txt和a_20171007_1000.txt?