【问题标题】:UNIX 'ls' command exclude wildcardUNIX 'ls' 命令排除通配符
【发布时间】:2012-04-21 03:16:51
【问题描述】:

我有文件 a1 a2 a3 b1 b2 b3,我只需要使用 ls 命令从列表中排除 a2 和 b2。

【问题讨论】:

  • 当我输入 ls --ignore="2" 时,它可以工作,但是(假设我有其他文件)当我输入 ls -a -b* --ignore= "*2",不排除任何文件

标签: unix ls


【解决方案1】:

使用 --ignore 选项

ls --ignore=[ab]2

【讨论】:

  • 但是在ls 的哪个版本上,--ignore 选项有效?在我的 MAC 上它不存在。
  • 如果有帮助,我正在使用 Fefora13。
  • 我的 Mac OSX 没那么先进 ;)
  • 这是硬件分配,我们只能使用 ls
【解决方案2】:

试试这个:

$ ls [a-b][13]
a1  a3  b1  b3

或者

$ shopt -s extglob
$ ls !(*2)
a1  a3  b1  b3

【讨论】:

    【解决方案3】:

    只需列出您想要的文件:

    ls a1 a3 b1 b3
    

    【讨论】:

    • +1 因为这是满足“仅使用 ls”约束的唯一方法。任何使用 shell glob 操作参数列表的尝试都是在使用 shell。 (虽然,你使用 shell 来执行 ls,所以这个特定的约束可能是不适定的。)
    • @WilliamPursell,我的想法完全正确。
    【解决方案4】:

    用 ls 和 grep 试试

    ls -1 | grep -viw "a2\|b2"
    

    注意 ls a put 1(数字一)而不是字母“l”之后。有时字体会让他们感到困惑。

    【讨论】:

      猜你喜欢
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 2014-01-02
      • 2011-11-22
      • 2013-09-22
      相关资源
      最近更新 更多