locate 搜索命令
搜索格式:locate 文件名
在后臺數據庫中按文件名稱進行搜索,搜索速度快
第一次執行此命令時可能會出現:locate: can not stat () `/var/lib/mlocate/mlocate.db': 沒有那個文件或目錄
解決方法:首先執行,updatedb,執行完成后,locate命令即可正常執行
舉例:locate install.log
新建的文件不能使用locate查找到,此時需更新數據庫,才可以查看
更新數據庫命令:updatedb
切換到根目錄[root@localhost /]#
輸入 vi etc/updatedb.conf 即可打開locate的搜索規則配置文件
當值為yes時,一下規則全部生效
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
PRUNENAMES = ".git .hg .svn"
不會查找以下文件夾中的文件
PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"
文件搜索命令:whereis
特點:用于搜索命令所在的路徑以及幫助文檔所在的位置,不能搜索用戶自己創建的文件等信息。
選項:
-b:只查找可執行文件
-m:只查找幫助文件
文件搜索命令:which
特點:能看到命令的路徑,如果有別名,還能看到別名的說明。
whereis和which不能看到shell命令,只能看到外部安裝的命令。
$PATH說明:類似于Windows中的環境變量,執行命令的時候都要在path定義的目錄中去尋找。
path環境變量:定義的是系統搜索命令的路徑
[root@localhost~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
所以像ls這樣的命令就可以不用加路徑(/bin/ls)執行了。
find搜索命令
find搜索(避免大范圍的搜索,會非常浪費系統資源,建議不在直接在“/”目錄下搜索)
格式:find 【搜索范圍】【搜索條件】;
例:find /home -name 文件名;
注意:find搜索默認是完全匹配。
如果需要進行模糊查詢,需要添加通配符,通配符有以下3種
""匹配任意字符,例:find /home -name "test",顯示所有名字帶test的文件;或例:find /home -name "****",home目錄下的所有文件,包括隱藏文件。
“?”匹配任意一個字符,
“[]”匹配任意一個中括號內的字符,例:find /home -name “test[12]”,顯示test1和test2文件;或find /home -name “[12]”,顯示以1和2開頭的文件。
組合使用:例:find /home -name “*[12]”,顯示所有1和2結尾的文件
find 按文件時間來搜索
find /home -mtime +10 在home目錄下,查找10天前修改的文件
find /home -mtime 10 在home目錄下,查找10天前當天修改的文件
find /home -mtime -10 在home目錄下,查找10天內修改的文件
atime 文件訪問時間
ctime 改變文件屬性
mtime 修改文件內容
find搜索
find /root -iname test 不區分要搜索的test大小寫格式
find /root -user root 搜索root目錄下的所有屬于root用戶的文件
find /root -nouser 沒有所屬者的文件,liunx中,每個文件都有所屬者,如果沒有,那么一般都是垃圾文件,但還是有特例的,比如內核產生的文件,就沒有所屬者,一般在proc和sys目錄下;還有外來文件,也就是U盤拷入的文件也會忽略所有者。
find 目錄 -size 文件大小
注意:文件大小用小寫k和大寫M。
-a 表示and
-o 表示or
find /etc -size +20k -a -size -50k -exec ls -lh {} ;
-exec {} ; 固定格式,表示直接對前面的搜索結果進行后面的命令處理
grep [選項] 字符串 文件名 (字符串使用 "" 包圍,結果為行記錄)
-i 忽略大小寫
-v 排除指定字符串
find 命令與 grep 命令的區別
find:在 系統 中搜索符合條件的 文件名,使用 通配符(完全)匹配
grep:在 文件 當中搜索符合條件的 字符串,使用 正則表達式 (包含)匹配