如何使用 shell 命令列出第一个字符为“s”、最后一个字符为“l”的文件?

-5 command-line bash wildcards

我正在尝试列出以“s”和“l”开头的文件。

我正在尝试的命令是ls -l *sfa*

lau*_*a C 5

问题不是很清楚...根据您对@cmks的评论,这里有两个选项:

  1. 如果您正在查找文件名第一个字符是“s”而最后一个字符是“l”的文件 - 则使用ls -l s*l

  2. 如果您正在查找文件名的第一个字符是(“a”或“s”)而最后一个字符是(“a”或“l”)的文件 - 则使用ls [as]*[al]

如果还有其他问题,请编辑您的问题以澄清......

您的版本ls -l sfa将仅列出具有确切名称“sfa”的文件(或者,如果存在具有该名称的目录,则列出该目录中的任何文件)。它不做你似乎正在寻找的事情。


匹配文件名(“globbing”)的规则非常简单:

  1. “?” 匹配任何单个字符
  2. “*”匹配任意数量(零个或多个)字符
  3. 使用方括号 ([]) 匹配集合中的单个字符:[fqsb] 匹配 f、q、s 或 b;[bd] 匹配 b、c 或 d
  4. 使用大括号 ({}} 匹配多个特定字符串之一:{foo,bar} 匹配“foo”或“bar”。

目录分隔符“/”被排除在匹配之外——仅对文件名进行匹配。

另请参阅Ubuntu 帮助中的ShellGlobbing 。