文件查找和比較
1、locate/slocate命令
locate命令其實(shí)是find -name的另一種寫法,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個(gè)數(shù)據(jù)庫/var/lib/locatedb,這個(gè)數(shù)據(jù)庫中含有本地所有文件信息。Linux系統(tǒng)自動(dòng)創(chuàng)建這個(gè)數(shù)據(jù)庫,并且每天自動(dòng)更新一次,所以使用locate命令查不到最新變動(dòng)過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動(dòng)更新數(shù)據(jù)庫。
選項(xiàng):
-d<目錄>或--database=<目錄>:指定數(shù)據(jù)庫所在的目錄;
-u:更新slocate數(shù)據(jù)庫;
--help:顯示幫助;
--version:顯示版本信息。
例子:
搜索etc目錄下所有以sh開頭的文件:
locate /etc/sh
搜索用戶主目錄下,所有以m開頭的文件:
locate ~/m
搜索用戶主目錄下,所有以m開頭的文件,并且忽略大小寫:
locate -i ~/m
ps:centos7 默認(rèn)沒有l(wèi)ocate命令,需要輸入“yum install mlocate”命令安裝,安裝完成后,輸入“updatedb”更新數(shù)據(jù)庫
2、diff命令
diff命令在最簡單的情況下,比較給定的兩個(gè)文件的不同。如果使用“-”代替“文件”參數(shù),則要比較的內(nèi)容將來自標(biāo)準(zhǔn)輸入。diff命令是以逐行的方式,比較文本文件的異同處。如果該命令指定進(jìn)行目錄的比較,則將會比較該目錄中具有相同文件名的文件,而不會對其子目錄文件進(jìn)行任何比較操作
選項(xiàng)參考網(wǎng)站:
例子:
將目錄/usr/liangxj_pratice/logFile/下的文件"application.properties"與當(dāng)前目錄下的文件"application.properties"進(jìn)行比較
diff /usr/liangxj_pratice/logFile/ application.properties
ps:還有個(gè)可以對比三個(gè)文件的命令:
3、find命令
查找目錄并列出目錄下的文件(將找到的目錄添加到ls命令后一次執(zhí)行,參數(shù)過長時(shí)會分多次執(zhí)行)。x命令是刪除當(dāng)前光標(biāo)下的字符,如果指定count作為參數(shù),則是向右查找count個(gè)字符并刪除,而x命令是刪除當(dāng)前光標(biāo)前的一個(gè)字行,如果指定count作為參數(shù),則是向左查找count個(gè)字符并刪除.。-type 查找某一類型的文件,諸如:b - 塊設(shè)備文件,d - 目錄,c - 字符設(shè)備文件,p - 管道文件linux常用命令,l - 符號鏈接文件,f - 普通文件。
選項(xiàng)參考網(wǎng)站:
例子:
根據(jù)文件或者正則表達(dá)式進(jìn)行匹配
列出當(dāng)前目錄及子目錄下所有文件和文件夾
find .
在/home目錄下查找以.txt結(jié)尾的文件名
find /home -name "*.txt"
同上,但忽略大小寫
find /home -iname "*.txt"
當(dāng)前目錄及子目錄下查找所有以.txt和.pdf結(jié)尾的文件
find . \( -name "*.txt" -o -name "*.pdf" \) 或 find . -name "*.txt" -o -name "*.pdf"
匹配文件路徑或者文件
find /usr/ -path "*local*"
基于正則表達(dá)式匹配文件路徑
find . -regex ".*\(\.txt\|\.pdf\)$"
同上,但忽略大小寫
find . -iregex ".*\(\.txt\|\.pdf\)$"
否定參數(shù)
找出/home下不是以.txt結(jié)尾的文件
find /home ! -name "*.txt"