搜索文件
和新建文件類(lèi)似的,在終端中提供了多種方式進(jìn)行文件的搜索,常用的也是三種方式。
- which命令
對(duì)于which指令來(lái)說(shuō),首先需要注意的是which命令只能搜索PATH環(huán)境變量中的內(nèi)容,比如搜索一個(gè)命令程序所在的具體路徑,如果該命令存在于PATH環(huán)境變量中,則能搜索到,否則搜索不到。也由于這點(diǎn),使得which命令的使用頻率并不是很高。
#使用which命令搜索test命令所在的絕對(duì)路徑
#test命令是確實(shí)存在的命令
os@DESKTOP-2DHQBVS:~$ which test
/usr/bin/test
- locate命令
locate命令的使用方法同樣簡(jiǎn)單, 只需要在命令之后添加上指定的文件名稱(chēng)即可。
#使用locate命令搜索“test”,輸出結(jié)果中,可見(jiàn)其輸出了所有包含test關(guān)鍵詞的路徑
os@DESKTOP-2DHQBVS:~$ locate test
/etc/popularity-contest.conf
/etc/cron.d/popularity-contest
/etc/cron.daily/popularity-contest
/etc/profile.d/Z99-cloud-locale-test.sh
/usr/bin/grub-fstest
/usr/bin/test
/usr/lib/git-core/git-remote-testsvn
/usr/lib/python3/dist-packages/jinja2/tests.py
/usr/lib/python3/dist-packages/jinja2/__pycache__/tests.cpython-35.pyc
/usr/lib/python3/dist-packages/markupsafe/tests.py
。。。。。。
lcoate命令最大的特點(diǎn)是搜索速度快,因?yàn)閘ocate命令在搜索文件時(shí)并不是在磁盤(pán)上進(jìn)行搜索。locate命令會(huì)不定期的對(duì)磁盤(pán)上所有的文件進(jìn)行一次掃描,生成一個(gè)數(shù)據(jù)庫(kù),當(dāng)需要查找文件時(shí),只需要查找數(shù)據(jù)庫(kù)就可以,所以速度很快。
不同的Linux發(fā)行版,數(shù)據(jù)庫(kù)的更新頻率不同,可能一天,也可能一周。所以,新建的文件,往往不能立刻就能搜索到。這時(shí)候可以使用手動(dòng)更新的方法更新數(shù)據(jù)庫(kù)。
#使用updatedb命令進(jìn)行數(shù)據(jù)庫(kù)的手動(dòng)更新
#需要注意的是,該命令的使用需要管理員權(quán)限
#該命令耗時(shí)較長(zhǎng)
os@DESKTOP-2DHQBVS:~$sudo updatedb
- find命令
find命令是終端中強(qiáng)大的文件查找命令,能夠使用不同的方式進(jìn)行文件的搜索。
#直接搜索文件名稱(chēng)
#注意,該操作,只在當(dāng)前文件夾內(nèi)進(jìn)行搜索
os@DESKTOP-2DHQBVS:~$ find tedu.txt
tedu.txt
#輸出最近三天修改的文件
os@DESKTOP-2DHQBVS:~$ find ~ -mtime -3
/home/os
/home/os/.nano
/home/os/tedu.txt
/home/os/tedu_1.txt
/home/os/tedu_2.txt
/home/os/tedu_3.txt
/home/os/tedu_nano.txt
除了mtime修改時(shí)間選項(xiàng)外,還有atime(訪問(wèn)時(shí)間)、ctime(狀態(tài)改變時(shí)間)、newer(相對(duì)某文件更新的時(shí)間)等時(shí)間選項(xiàng)。上述示例中的時(shí)間為“-3”,代表三天內(nèi),如果是“+3”,則代表三天前,“3”則代表向前數(shù)第3天,需要注意正負(fù)符號(hào)的使用,否則可能搜索不到文件。
find命令除了根據(jù)時(shí)間查詢外,還可以根據(jù)文件名、文件類(lèi)型、文件所屬用戶、文件大小等信息來(lái)查找,使用方法如下所示。
#查找某路徑下屬于某用戶(此處為os)的所有文件
os@tedu:~$ find /home -user os
#由于輸出文件比較多,此處不再展示,請(qǐng)讀者自行嘗試查看
#根據(jù)文件名查找文件路徑
os@tedu:~$ find -name tedu_cp.txt
#未添加查找路徑的情況下,默認(rèn)在當(dāng)前目錄搜索,輸出結(jié)果為當(dāng)前目錄的相對(duì)目錄
./tedu_cp.txt
#添加查找路徑的情況下,在指定目錄中查找,輸出結(jié)果以指定目錄開(kāi)始
os@tedu:~$ find /home -name tedu_cp.txt
/home/os/tedu_cp.txt
#查找當(dāng)前目錄下所有的管道類(lèi)型文件
os@tedu:~$ find -type p
#輸出的管道類(lèi)型的文件
./tedu_fifo