2

基本上我要做的是列出具有特定扩展名的当前目录的内容(在我的情况下是 .c 文件)。

所以我认为可行的是:

ls | grep .\*\.c

它主要工作,但也返回以 c 结尾的文件

  1. 音乐(这是一个目录)
  2. 测试.doc

我的正则表达式是否有问题,因为我看不到它。

非常感谢

4

4 回答 4

4

您可以简单地使用ls *.c列出当前目录中具有.c扩展名的所有文件。

于 2012-12-12T17:53:15.097 回答
3

以下是您可以执行的操作:

find -name "*.c"

它会.c从当前工作目录递归地为您找到所有带有扩展名的文件。

或者,如果您想要非递归并且想要使用ls,您可以执行以下操作:

ls *.c

如果您想知道如何将正则表达式应用于grep搜索ls结果(即使这更麻烦):

ls | grep ".*\.c$"

正则说明:

  • .- 匹配任何字符
  • .*- 匹配任何字符零次或多次
  • .*\.- 匹配任何字符零次或多次,然后匹配一个.字面意思(通过“转义”它指定\
  • ".*\.c- 匹配任何字符零次或多次,然后匹配.字面意思,然后匹配字符c
  • .*\.c$- 匹配任何字符零次或多次,然后匹配 a.字面意思,然后匹配 char c;并且仅当这是模式的结尾(在那之后没有更多的东西)。$是“结束”的正则表达式锚。
于 2012-12-12T17:53:16.843 回答
2

你很接近

ls | grep \\.c$

查看双反斜杠

于 2012-12-12T17:57:50.470 回答
1

您需要转义反斜杠:

ls | grep .*\\.c
于 2012-12-12T17:59:49.020 回答