我想要做的事情基本上是列出当前目录下特定扩展名(在我的情况下是.c文件)的所有内容。
所以我认为会起作用的是:
ls | grep .\*\.c
它主要可以工作,但也会返回以c结尾的文件,例如:
- music(这是一个目录)
- test.doc
我无法发现我的正则表达式有什么问题。请问这是什么原因?
非常感谢。
ls *.c
命令来列出当前目录下所有扩展名为.c
的文件。以下是您可以做的事情:
find -name "*.c"
如果您想要递归地从当前工作目录查找所有扩展名为.c
的文件,可以使用以下命令:
find . -name "*.c"
另外,如果您不想递归查找,并希望使用ls
命令来完成此操作,可以执行以下命令:
ls *.c
ls *.c
grep
正则表达式在 ls
搜索结果中进行匹配(尽管这更加繁琐):ls | grep ".*\.c$"
< p > 正则表达式说明:
.
- 匹配任何字符.*
- 匹配零个或多个任意字符.*\.
- 匹配零个或多个任意字符,然后匹配一个.
(通过使用\
进行“转义”)".*\.c
- 匹配零个或多个任意字符,然后匹配一个.
(通过使用\
进行“转义”),然后匹配字符c
.*\.c$
- 匹配零个或多个任意字符,然后匹配一个.
(通过使用\
进行“转义”),然后匹配字符c
;仅当这是模式的结尾(后面没有其他内容时)。$
是正则表达式锚点,表示“结尾”。你已经很接近了
ls | grep \\.c$
请注意双反斜杠
你需要转义你的反斜杠:
ls | grep .*\\.c
.
匹配任何字符,因此您必须转义.
才能匹配实际的.
。 - Drake Clarris