【问题标题】:how to escape parenthesis in ls commands如何在 ls 命令中转义括号
【发布时间】:2018-03-23 13:50:37
【问题描述】:

我没有成功过滤带括号的 ls 文件(在 bash 上)

$ ls -1
a_échéancier(1).pdf
a_échéancier(2).pdf
a_échéancier(3).pdf
a_échéancier(4).pdf
a_échéancier(5).pdf
a_échéancier(6).pdf
a_échéancier.pdf
$

在这里试试:

$ ls "*).pdf"
ls: cannot access '*).pdf': No such file or directory
$
$ ls '*\).pdf'
ls: cannot access '*\).pdf': No such file or directory
$

【问题讨论】:

  • 这与 ls 无关,与您使用的 shell 无关。
  • 什么外壳?重击?切? ...您需要标记您使用的外壳。标记ls 没有用。

标签: bash ls


【解决方案1】:

你转义了太多字符;唯一需要转义的字符是)

ls *\).pdf

但是除了*之外的所有其他东西都可以被转义:

ls *").pdf"

shell 本身就是在 ls 甚至运行之前扩展 glob 的东西; ls 只是得到一个明确的文件名列表。引用* 会使ls 尝试列出名为*).pdf 的单个文件,而不是当前目录中与该模式匹配的每个文件。

【讨论】:

    【解决方案2】:

    ls -1 | grep "*).pdf" 应该可以完成这项工作。 ls 只是在尝试完全匹配后添加一个文件名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-08
      • 2010-09-20
      • 1970-01-01
      • 2018-04-02
      • 2016-08-25
      • 2011-04-10
      • 1970-01-01
      相关资源
      最近更新 更多