【问题标题】:using bash script, get the list of dates from filenames in folder, list dates, list suffixes使用 bash 脚本,从文件夹中的文件名中获取日期列表,列出日期,列出后缀
【发布时间】:2018-02-26 17:26:50
【问题描述】:

我有几个文件类型:

id2018.12.15.log
id2018.12.16.log
id2018.12.17_a.log
id2018.12.17_b.log
...

我需要对这些文件名中的不同日期进行排序,并对后缀进行排序。

我知道我需要使用 cut、sed、sort 命令的组合。我也知道最好将输出存储在文件中,但这不一定是关键。请问有什么想法吗?

谢谢。

【问题讨论】:

  • 如果不向我们提供您尝试过的方法和出了什么问题的示例,或者至少是逻辑上认为这将如何发生的高级伪代码,您不太可能得到很多回复。见stackoverflow.com/help/how-to-ask
  • 好的,谢谢。理想情况下,我想从文件中获取不同的日期列表。然后从文件中获取不同的后缀列表。我正在考虑使用 cut 和 sed 对两个部分(日期和后缀)进行排序
  • Stack Overflow 不是代码编写服务。请出示您的代码。由于 Stack Overflow 向您隐藏了关闭原因:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: linux sorting sed filenames


【解决方案1】:

如果您的文件名保证不包含空格/换行符:

$ ls -1
2018.12.18_z
id2018.12.15.log
id2018.12.16.log
id2018.12.17_a.log
id2018.12.17_b.log


$ printf '%s\n' * | grep -oP '\d{4}\.\d{2}\.\d{2}' | sort -u
2018.12.15
2018.12.16
2018.12.17
2018.12.18

$ printf '%s\n' * | grep -oP '\d{4}\.\d{2}\.\d{2}_\K\w+' | sort -u
a
b
z

【讨论】:

  • 感谢 Gilles,我正在尝试将您的建议写入我的脚本,但结果与您的不同。我实际上没有看到输出。
  • 感谢您使用预期输出更新您的原始帖子。有什么错误吗?我的命令的输出是什么?
  • 无论我执行的是“ls -1”还是“printf ...”命令,我都看不出输出有什么不同。我得到了带有全名的文件列表,而不仅仅是日期。
  • 单独grep -oP 的输出是什么? ls 不是要解析的工具:mywiki.wooledge.org/ParsingLs
  • 啊,我的错,我漏掉了一根管子。它现在显示正确的输出。但是我需要两个不同的命令,一个只显示不同的日期,一个只显示后缀。
猜你喜欢
  • 2014-01-08
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多