簡體   English   中英

在bash中使用正則表達式來查找文件

[英]Using regex in bash to find files

基本上我要做的是列出當前目錄中具有特定擴展名的內容(在我的情況下是.c文件)。

所以我認為可行的是:

ls | grep .\*\.c

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

  1. 音樂(這是一個目錄)
  2. 為Test.doc

我的正則表達式有問題,因為我看不到它。

非常感謝

您只需使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM