【问题标题】:Shell filename substitution for zero or one occurrenceShell 文件名替换为 0 次或 1 次
【发布时间】:2018-12-13 03:01:43
【问题描述】:

有以下文件列表:

-rw-r----- 1 mysql install 80550 Dec 11 16:40 TEST30042.log
-rw-r----- 1 mysql install 74006 Dec 11 17:39 TEST30032.log
-rw-r----- 1 mysql install 74566 Dec 11 17:39 TEST30012.log
-rw-r----- 1 mysql install 88435 Dec 11 17:39 TEST32.log
-rw-r----- 1 mysql install 79540 Dec 11 17:39 TEST30022.log
-rw-r----- 1 mysql install 17276 Dec 11 21:07 TEST30021.log
-rw-r----- 1 mysql install 15623 Dec 11 21:07 TEST31.log
-rw-r----- 1 mysql install 17280 Dec 11 21:07 TEST30031.log
-rw-r----- 1 mysql install 16302 Dec 11 21:07 TEST30011.log
-rw-r----- 1 mysql install 16002 Dec 11 21:07 TEST30041.log
-rw-r----- 1 mysql install 29035 Dec 12 14:00 TEST30010.log
-rw-r----- 1 mysql install 16926 Dec 12 14:00 TEST30020.log
-rw-r----- 1 mysql install 14381 Dec 12 14:00 TEST30040.log
-rw-r----- 1 mysql install 29157 Dec 12 14:00 TEST30030.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST30.log
-rw-r----- 1 mysql install  5977 Dec 12 15:02 TEST3002.log
-rw-r----- 1 mysql install  6670 Dec 12 15:03 TEST3001.log
-rw-r----- 1 mysql install  6670 Dec 12 15:03 TEST3003.log
-rw-r----- 1 mysql install  6526 Dec 12 15:03 TEST3004.log
-rw-r----- 1 mysql install  7167 Dec 12 19:29 TEST3.log

尝试使用以下命令仅列出名称为 TEST3.log、TEST30.log、TEST31.log、TEST32.log 的文件。但是没有得到想要的输出。

$ ls -ltr TEST3?.log
-rw-r----- 1 mysql install 88435 Dec 11 17:39 TEST32.log
-rw-r----- 1 mysql install 15623 Dec 11 21:07 TEST31.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST30.log

据我了解,“?”是零次或单次出现的符号。无法弄清楚为什么 TEST3.log 文件被遗漏了..

预期输出

-rw-r----- 1 mysql install 88435 Dec 11 17:39 TEST32.log
-rw-r----- 1 mysql install 15623 Dec 11 21:07 TEST31.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST30.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST3.log

想办法做到这一点是通过做

ls -ltr TEST3?.log TEST3.log
-rw-r----- 1 mysql install 88435 Dec 11 17:39 TEST32.log
-rw-r----- 1 mysql install 15623 Dec 11 21:07 TEST31.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST30.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST3.log

想知道是否有更好的最简单方法。

提前致谢。

【问题讨论】:

    标签: regex shell file substitution


    【解决方案1】:

    ? 运算符仅代表一个通配符。零个或一个字符没有运算符。您必须通过另一个工具使用循环或管道ls

    我假设您使用的是基于目录列表的 Linux。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-02
      • 2017-11-09
      • 2015-11-14
      • 2015-06-29
      • 1970-01-01
      • 2018-03-12
      • 2023-03-14
      • 2017-10-14
      相关资源
      最近更新 更多