[英]Using regex in bash to find files
基本上我要做的是列出當前目錄中具有特定擴展名的內容(在我的情況下是.c文件)。
所以我認為可行的是:
ls | grep .\*\.c
它主要工作,但也返回以c結尾的文件
我的正則表達式有問題,因為我看不到它。
非常感謝
您只需使用ls *.c
列出當前目錄中擴展名為.c
所有文件。
這是你可以做的:
find -name "*.c"
並且它將從當前工作目錄遞歸地找到所有具有.c
擴展名的文件。
或者,如果你想要非遞歸並希望用ls
做,你可以這樣做:
ls *.c
如果你想知道如何將帶有grep
正則表達式應用於ls
搜索結果(即使這更麻煩):
ls | grep ".*\.c$"
Regexplanation:
.
- 匹配任何角色 .*
- 匹配任何字符零次或多次 .*\\.
- 匹配任何字符零次或多次,然后匹配a .
從字面上看(用“轉義”用\\
) ".*\\.c
- 匹配任何字符零次或多次,然后匹配a .
字面意思,然后匹配char c
.*\\.c$
- 匹配任何字符零次或多次,然后匹配a .
從字面上看,然后匹配char c
; 並且只有當這是模式的結束時(之后沒有更多的東西)。 $
是“結束”的正則表達式錨點。 你很近
ls | grep \\.c$
看到雙反斜杠
你需要逃避反斜杠:
ls | grep .*\\.c
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.