基本上我要做的是列出具有特定扩展名的当前目录的内容(在我的情况下是 .c 文件)。
所以我认为可行的是:
ls | grep .\*\.c
它主要工作,但也返回以 c 结尾的文件
- 音乐(这是一个目录)
- 测试.doc
我的正则表达式是否有问题,因为我看不到它。
非常感谢
您可以简单地使用ls *.c列出当前目录中具有.c扩展名的所有文件。
以下是您可以执行的操作:
find -name "*.c"
它会.c从当前工作目录递归地为您找到所有带有扩展名的文件。
或者,如果您想要非递归并且想要使用ls,您可以执行以下操作:
ls *.c
如果您想知道如何将正则表达式应用于grep搜索ls结果(即使这更麻烦):
ls | grep ".*\.c$"
正则说明:
.- 匹配任何字符.*- 匹配任何字符零次或多次.*\.- 匹配任何字符零次或多次,然后匹配一个.字面意思(通过“转义”它指定\)".*\.c- 匹配任何字符零次或多次,然后匹配.字面意思,然后匹配字符c.*\.c$- 匹配任何字符零次或多次,然后匹配 a.字面意思,然后匹配 char c;并且仅当这是模式的结尾(在那之后没有更多的东西)。$是“结束”的正则表达式锚。你很接近
ls | grep \\.c$
查看双反斜杠
您需要转义反斜杠:
ls | grep .*\\.c