【问题标题】:How to list out specific files with dates in the file name in unix shell如何在unix shell中列出文件名中带有日期的特定文件
【发布时间】:2016-01-06 20:36:54
【问题描述】:

如果我问了一个重复的问题,我深表歉意。我的谷歌技能暂时离开了我,我不知道如何用我的问题来寻找答案。

我正在使用 unix 服务器,我有一堆文件以这种格式作为文件名:

alert_YYYY-MM-DD.tsv

我正在尝试根据日期列出特定范围的文件,但由于某种原因,它无法正常工作。

这出于某种原因:

$ ls alert_2015-08-0[1-9].tsv
alert_2015-08-01.tsv  alert_2015-08-04.tsv  alert_2015-08-07.tsv
alert_2015-08-02.tsv  alert_2015-08-05.tsv  alert_2015-08-08.tsv
alert_2015-08-03.tsv  alert_2015-08-06.tsv  alert_2015-08-09.tsv

但这并没有,即使文件存在:

$ ls alert_2015-08-[10-15].tsv
ls: alert_2015-08-[10-15].tsv: No such file or directory
$ ls alert_2015-08-1[0-5].tsv   ### but the files exist in the directory!!
alert_2015-08-10.tsv  alert_2015-08-12.tsv
alert_2015-08-11.tsv  alert_2015-08-14.tsv

我也在尝试从个位数跨越到十几岁或十几岁到 20 多岁,但它也不起作用,尽管它可能比上面更困难:

e.g. 
$ ls alert_2015-08-[09-15].tsv
ls: alert_2015-08-[09-15].tsv: No such file or directory

我不确定这是一个全局问题还是正则表达式问题,但这很烦人,因为从逻辑上讲,我上面写的内容应该有效,但它没有,我不明白为什么,除了语法错误。提前感谢您的帮助。

【问题讨论】:

标签: regex shell unix glob ls


【解决方案1】:

[] 中的数字最多为 0-9。

$ ls alert_2015-08-[0-1][0-9].tsv
alert_2015-08-01.tsv    alert_2015-08-10.tsv    alert_2015-08-14.tsv
alert_2015-08-04.tsv    alert_2015-08-11.tsv
alert_2015-08-07.tsv    alert_2015-08-12.tsv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 2011-06-02
    • 2012-02-16
    • 2019-02-03
    • 2014-01-19
    • 2015-01-08
    • 2019-12-22
    相关资源
    最近更新 更多