題 如何在終端中查找具有特定文本的文件


我想找到包含特定文本字符串的所有文件。你會怎麼在航站樓那樣做?


131
2017-07-13 09:42


起源


但是,如果您想獲得快速結果,請使用Spotlight。此外,如果要查找不一定直接在文件中存儲文本的文件,如PDF或ODF。 - Joey
很好的建議,但在我的情況下,我不確定文件是否已編入索引,因為它們在網絡驅動程序上。它們也是屬於特定程序的xml文件。 - Svish
看一眼 unix.stackexchange.com/a/37932/213832 這個解決方案很有效 - boyd4715


答案:


grep -r 'text goes here' path_goes_here

236
2017-07-13 09:47



我建議一個 man grep 發現grep的所有精彩選項 - Ludovic Kuty
這將列出路徑中存在的每個文件並添加: No such file or directory  我試圖得到文本出現的列表。我們怎樣才能獲得該清單? - CP3O
得到它了: grep -lr "text pattern" ./ -s ; grep -lr "text pattern" [PATH OF PARENT] -s - CP3O


使用聚光燈

mdfind "text goes here"
mdfind -onlyin /home/user/Desktop -live "live update"

別忘了看:

man mdfind

24
2017-08-12 22:38



這對於聚光燈下的文件是否有效(或隱藏文件夾中的文件,系統配置文件等)是否有效? - Peter Berg
Grep似乎不解析.xlsx文件,但這很好。另一個簡單的例子:mdfind -onlyin。 “SEARCHTEXT” - FvD


  1. 通過Ack

brew install ack ack "text goes here"

  1. 通過找到

find . |grep "text goes here"

  1. 通過grep

grep -RnslI "text goes here"


7
2018-03-03 14:07





您可以根據自己的口味和需求選擇以下其中一種。假設您需要在當前目錄中遞歸搜索包含文本的文件 - “async”,您可以通過以下方式之一進行搜索:

使用grep enter image description here

用ack enter image description here


1
2018-06-01 08:00





Ignacio的答案很棒,幫助我找到包含特定文本的文件。我遇到的唯一問題是,在運行此命令時,將列出所有文件,包括模式未顯示的文件。

No such file or directory 這是我在不包含模式的文件旁邊看到的。

如果相反,你添加 -s 命令,如: grep -lr "text pattern" ./ -s ; grep -lr "text pattern" [PATH DIRECTORY] -s 使用時,它只會顯示哪些文件包含模式。

同樣如果 grep -nr "text pattern" ./ -s ; grep -nr "text pattern" [PATH OF DIRECTORY] -s 命令用於打印文件加行號,以及模式的出現。

如果我的理解是錯誤的,請糾正我。

參考:如何讓grep不打印出“No such file or directory”錯誤?


1
2018-06-01 15:27



避免那些討厭的另一種方法 沒有這樣的文件 錯誤,是將stderr管道為null。 grep ... 2>/dev/null。此解決方案適用於大多數程序,因為它們在stderr流上報告錯誤消息,而不是stdout。我已多次使用此解決方案 find,正如它會說的那樣 沒有權限 對於許多文件。 - jpaugh
(1)如果你得到了 No such file or directory 存在的文件的消息,要么是你做錯了,要么你的系統壞了。 (2)什麼 [PATH OF PARENT] 有什麼關係嗎? - G-Man
@ G-Man我編輯了答案 [PATH OF DIRECTORY] 只是因為不熟悉的人想知道我為什麼放了 ./ - CP3O
@G-Man我使用的是Mac而不是Ubuntu,不確定我的系統會如何被破壞,我幾乎沒有做任何事情。 - CP3O