如何在ls命令中转义括号

时间:2018-03-23 13:50:38

标签: bash ls

我没有成功过滤带有括号的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
$

2 个答案:

答案 0 :(得分:1)

你正在逃避太多的角色;唯一需要转义的字符是)

ls *\).pdf

但除了* 之外的所有其他内容都可以转义:

ls *").pdf"

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

答案 1 :(得分:-2)

SELECT Inst, Term, Year, FreezeDate, UploadDate, RecordCount, ErrorCount, FileName, System, FROM table WHERE UploadDate=( SELECT MAX(UploadDate) FROM table WHERE System = ('a') and Year = ('2017') and Inst = ('123') and (Term = ('1') or Term = ('4'))) 应该做的工作。 ls -1 | grep "*).pdf"后面有一个文件名,只是试图将其完全匹配。