基本上我要做的是列出具有特定扩展名的当前目录的内容(在我的情况下是 .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