如何在 Linux 中查找文件
如果你是 Windows 或 OSX 的非資深用戶,那麼可能使用 GUI 來查找文件。你也可能發現界面受限,令人沮喪,或者兩者兼而有之,並學會了組織文件並記住它們的確切順序。你也可以在 Linux 中做到這一點 —— 但你不必這樣做。
Linux 的好處之一是它提供了多種方式來處理。你可以打開任何文件管理器或按下 Ctrl+F
,你也可以使用程序手動打開文件,或者你可以開始輸入字母,它會過濾當前目錄列表。
![Screenshot of how to find files in Linux with Ctrl+F](/data/attachment/album/201804/28/070943lm9r6z9tfn7nmfnf.png "Screenshot of how to find files in Linux with Ctrl+F")
使用 Ctrl+F 在 Linux 中查找文件的截圖
但是如果你不知道你的文件在哪裡,又不想搜索整個磁碟呢?對於這個以及其他各種情況,Linux 都很合適。
按命令名查找程序位置
如果你習慣隨心所欲地放文件,Linux 文件系統看起來會讓人望而生畏。對我而言,最難習慣的一件事是找到程序在哪裡。
例如,which bash
通常會返回 /bin/bash
,但是如果你下載了一個程序並且它沒有出現在你的菜單中,那麼 which
命令就是一個很好的工具。
一個類似的工具是 locate
命令,我發現它對於查找配置文件很有用。我不喜歡輸入程序名稱,因為像 locate php
這樣的簡單程序通常會提供很多需要進一步過濾的結果。
有關 locate
和 which
的更多信息,請參閱 man
頁面:
man which
man locate
find
find
工具提供了更先進的功能。以下是我安裝在許多伺服器上的腳本示例,我用於確保特定模式的文件(也稱為 glob)僅存在五天,並且所有早於此的文件都將被刪除。 (自上次修改以來,分數用於保留最多 240 分鐘的偏差)
find ./backup/core-files*.tar.gz -mtime +4.9 -exec rm {} ;
find
工具有許多高級用法,但最常見的是對結果執行命令,而不用鏈式地按照類型、創建日期、修改日期過濾文件。
find
的另一個有趣用處是找到所有有可執行許可權的文件。這有助於確保沒有人在你昂貴的伺服器上安裝比特幣挖礦程序或殭屍網路。
find / -perm /+x
有關 find
的更多信息,請使用 man find
參考 man
頁面。
grep
想通過內容中查找文件? Linux 已經實現了。你可以使用許多 Linux 工具來高效搜索符合模式的文件,但是 grep
是我經常使用的工具。
假設你有一個程序發布代碼引用和堆棧跟蹤的錯誤消息。你要在日誌中找到這些。 grep
不總是最好的方法,但如果文件是一個給定的值,我經常使用 grep -R
。
越來越多的 IDE 正在實現查找功能,但是如果你正在訪問遠程系統或出於任何原因沒有 GUI,或者如果你想在當前目錄遞歸查找,請使用:grep -R {searchterm}
或在支持 egrep
別名的系統上,只需將 -e
標誌添加到命令 egrep -r {regex-pattern}
。
我在去年給 Raspbian 中的 dhcpcd5
打補丁時使用了這種技術,這樣我就可以在樹莓派基金會發布新的 Debian 時繼續操作網路接入點了。
哪些提示可幫助你在 Linux 上更有效地搜索文件?
via: https://opensource.com/article/18/4/how-find-files-linux
作者:Lewis Cowles 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive