在linux 系統(tǒng)中搜索文件和文件夾的 4 種方法
Linux 管理員一天都不能離開搜索文件,因為這是他們的日常活動。了解一些搜索的東西是不錯的,因為這能幫助你在命令行服務(wù)器中工作。這些命令記憶起來不復(fù)雜,因為它們使用的是標(biāo)準(zhǔn)語法。
可以通過四個 Linux 命令來執(zhí)行此操作,每個命令都有自己獨特的功能。
方法 1:使用 find 命令在 Linux 中搜索文件和文件夾
find
?命令被廣泛使用,并且是在 Linux 中搜索文件和文件夾的著名命令。它搜索當(dāng)前目錄中的給定文件,并根據(jù)搜索條件遞歸遍歷其子目錄。
它允許用戶根據(jù)大小、名稱、所有者、組、類型、權(quán)限、日期和其他條件執(zhí)行所有類型的文件搜索。
運行以下命令以在系統(tǒng)中查找給定文件。
1 2 | # find / -iname "sshd_config" /etc/ssh/sshd_config |
運行以下命令以查找系統(tǒng)中的給定文件夾。要在 Linux 中搜索文件夾,我們需要使用?-type
參數(shù)。
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 |
使用通配符搜索系統(tǒng)上的所有文件。我們將搜索系統(tǒng)中所有以?.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 |
使用以下命令格式在系統(tǒng)中查找空文件和文件夾。
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
?數(shù)據(jù)庫,而?find
?命令在真實系統(tǒng)中搜索。
它使用數(shù)據(jù)庫而不是搜索單個目錄路徑來獲取給定文件。
locate
?命令未在大多數(shù)發(fā)行版中預(yù)安裝,因此,請使用你的包管理器進(jìn)行安裝。
數(shù)據(jù)庫通過 cron 任務(wù)定期更新,但我們可以通過運行以下命令手動更新它。
1 | $ sudo updatedb |
只需運行以下命令即可列出給定的文件或文件夾。在?locate
?命令中不需要指定特定選項來打印文件或文件夾。
在系統(tǒng)中搜索?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 |
在系統(tǒng)中搜索?ssh_config
?文件。
1 2 | # locate --basename 'sshd_config' /etc/ssh/sshd_config |
方法 3:在 Linux 中搜索文件使用 which 命令
which
?返回在終端輸入命令時執(zhí)行的可執(zhí)行文件的完整路徑。
當(dāng)你想要為可執(zhí)行文件創(chuàng)建桌面快捷方式或符號鏈接時,它非常有用。
which
?命令搜索當(dāng)前用戶而不是所有用戶的?$PATH
?環(huán)境變量中列出的目錄。我的意思是,當(dāng)你登錄自己的帳戶時,你無法搜索 root 用戶文件或目錄。
運行以下命令以打印?vim
?可執(zhí)行文件的完整路徑。
1 2 | # which vi /usr/bin/vi |
或者,它允許用戶一次執(zhí)行多個文件搜索。
1 2 3 4 5 | # which -a vi sudo /usr/bin/vi /bin/vi /usr/bin/sudo /bin/sudo |
方法 4:使用 whereis 命令在 Linux 中搜索文件
whereis
?命令用于搜索給定命令的二進(jìn)制、源碼和手冊頁文件。
1 2 | # whereis vi vi: /usr/bin/vi /usr/share/man/man1/vi.1p.gz /usr/share/man/man1/vi.1.gz |