Linux 管理員一天都不能離開搜尋檔案,因為這是他們的日常活動。瞭解一些搜尋的東西是不錯的,因為這能幫助你在命令列伺服器中工作。這些命令記憶起來不復雜,因為它們使用的是標準語法。
可以通過四個 Linux 命令啦執行此操作,每個命令都有自己獨特的功能。
方法 1:使用 find 命令在 Linux 中搜尋檔案和資料夾
find
命令被廣泛使用,並且是在 Linux 中搜尋檔案和資料夾的著名命令。它搜尋當前目錄中的給定檔案,並根據搜尋條件遞迴遍歷其子目錄。
它允許使用者根據大小、名稱、所有者、組、型別、許可權、日期和其他條件執行所有型別的檔案搜尋。
執行以下命令以在系統中查詢給定檔案。
1 2 |
# find / -iname "sshd_config" /etc/ssh/sshd_config |
執行以下命令以查詢系統中的給定資料夾。要在 Linux 中搜尋資料夾,我們需要使用 -type
引數。
1 2 3 4 5 |
# find / -type d -iname "ssh" /usr/lib/ssh /usr/lib/go/src/cmd/vendor/golang.org/x/crypto/ssh /usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/crypto/ssh /etc/ssh |
使用萬用字元搜尋系統上的所有檔案。我們將搜尋系統中所有以 .config
為副檔名的檔案。
1 2 3 4 5 6 7 8 9 |
# find / -name "*.config" /usr/lib/mono/gac/avahi-sharp/1.0.0.0__4d116c78973743f5/avahi-sharp.dll.config /usr/lib/mono/gac/avahi-ui-sharp/0.0.0.0__4d116c78973743f5/avahi-ui-sharp.dll.config /usr/lib/python2.7/config/Setup.config /usr/share/git/mw-to-git/t/test.config /var/lib/lightdm/.config /home/daygeek/.config /root/.config /etc/skel/.config |
使用以下命令格式在系統中查詢空檔案和資料夾。
1 |
# find / -empty |
使用以下命令組合查詢 Linux 上包含特定文字的所有檔案。
1 2 3 4 |
# find / -type f -exec grep "Port 22" '{}' \; -print # find / -type f -print | xargs grep "Port 22" # find / -type f | xargs grep 'Port 22' # find / -type f -exec grep -H 'Port 22' {} \; |
方法 2:使用 locate 命令在 Linux 中搜尋檔案和資料夾
locate
命令比 find
命令執行得更快,因為它使用 updatedb
資料庫,而 find
命令在真實系統中搜尋。
它使用資料庫而不是搜尋單個目錄路徑來獲取給定檔案。
locate
命令未在大多數發行版中預安裝,因此,請使用你的包管理器進行安裝。
資料庫通過 cron 任務定期更新,但我們可以通過執行以下命令手動更新它。
1 |
$ sudo updatedb |
只需執行以下命令即可列出給定的檔案或資料夾。在 locate
命令中不需要指定特定選項來列印檔案或資料夾。
在系統中搜尋 ssh
資料夾。
1 2 3 4 5 6 7 |
# locate --basename '\ssh' /etc/ssh /usr/bin/ssh /usr/lib/ssh /usr/lib/go/pkg/linux_amd64/cmd/vendor/golang.org/x/crypto/ssh /usr/lib/go/src/cmd/go/testdata/failssh/ssh /usr/lib/go/src/cmd/vendor/golang.org/x/crypto/ssh |
在系統中搜尋 ssh_config
檔案。
1 2 |
# locate --basename '\sshd_config' /etc/ssh/sshd_config |
方法 3:在 Linux 中搜尋檔案使用 which 命令
which
返回在終端輸入命令時執行的可執行檔案的完整路徑。
當你想要為可執行檔案建立桌面快捷方式或符號連結時,它非常有用。
which
命令搜尋當前使用者而不是所有使用者的 $PATH
環境變數中列出的目錄。我的意思是,當你登入自己的帳戶時,你無法搜尋 root 使用者檔案或目錄。
執行以下命令以列印 vim
可執行檔案的完整路徑。
1 2 |
# which vi /usr/bin/vi |
或者,它允許使用者一次執行多個檔案搜尋。
1 2 3 4 5 |
# which -a vi sudo /usr/bin/vi /bin/vi /usr/bin/sudo /bin/sudo |
方法 4:使用 whereis 命令在 Linux 中搜尋檔案
whereis
命令用於搜尋給定命令的二進位制、原始碼和手冊頁檔案。
1 2 |
# whereis vi vi: /usr/bin/vi /usr/share/man/man1/vi.1p.gz /usr/share/man/man1/vi.1.gz |