【问题标题】:UNIX 'ls' command - wildcard 'OR' operatorUNIX 'ls' 命令 - 通配符 'OR' 运算符
【发布时间】:2012-06-24 16:05:44
【问题描述】:

我有一个带有时间戳文件的目录,格式为:

processAlpha20120618.txt
processAlpha20120619.txt
processAlpha20120620.txt
processBeta20120618.txt
processBeta20120619.txt
processBeta20120620.txt
... etc.

我想要一个特定日期的列表。像这样的:

ls -l *201206[19|20|21]*

显然上述方法不起作用,但您可以看到我试图实现的目标。我想匹配字符串“201206”后跟“19”、“20”或“21”的任何内容。

我知道使用 grepfind 可以做到这一点,我只是想知道是否可以使用 ls 来完成。

【问题讨论】:

  • 根据 Ed Heal 下面的回答,这是一个 shell 问题。因此,为了您的信息,我正在使用 Korn shell。
  • 在 KSH 中,这可以通过 ls -l *201206@(19|20|21)* 来完成

标签: string shell unix wildcard ls


【解决方案1】:

如果您想要匹配确切的日期(看起来就是这样),那么使用 bash 扩展的方法是:

ls -l *201206{19,20,21}*

【讨论】:

  • 太好了,谢谢。这与 KSH 的做法非常接近。
【解决方案2】:

ls 不这样做 - shell 扩展 * 等,然后将它们作为参数传递给 ls

查看 shell 的文档 - 调用 globbing

【讨论】:

  • 啊哈,这是我需要查看的外壳。谢谢你。
  • 好吧,我查看了 KSH globbing 的文档并找到了答案。这可以通过ls -l *201206@(19|20|21)* 完成
  • @Nossidge 这种语法在 Bash 中似乎也适用于我。
猜你喜欢
  • 2012-04-21
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 2013-09-22
  • 2011-12-30
  • 1970-01-01
相关资源
最近更新 更多