linux幾個常用的搜索命令

linux 搜索 locate whereis和which find grep
linux常用的搜索命令主要有locate,whereis,find,grep,那么他們如何使用,有什么區別呢?下面就讓我們一起來學習一下。

1.locate

  • locate命令主要是在后臺數據庫中按文件名進行搜索,搜索速度更快。數據庫為var/lib/mlocate。搜索的時候需要先用“updatedb”更新一下數據庫,否則新建的文件可能搜不到。
  • locate命令的配置文件為/etc/updatedb.conf,內容為:
    PRUNE_BIND_MOUNTS="yes"
    PRUNENAMES=".git .bzr .hg .svn"
    PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs"
    PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"
    其中“PRUNE_BIND_MOUNTS”為搜索限制配置。yes的時候表示下面的搜索限制配置全部生效,no的時候表示不生效。
    “PRUNENAMES”表示搜索時不搜索的文件類型。上面的內容就表示不搜索“.get,.bzr,.hg,.svn”類型的文件。
    “PRUNEFS”表示搜索時不搜索的文件系統。
    “PRUNEPATHS”表示搜索時不搜索的路徑。
  • locate的特點就是速度快,耗費系統資源小。但是功能單一,只能搜索文件名。

2.whereis和which

  • whereis用來搜索命令所在路徑及幫助文檔所在位置。它還有兩個選項:
    -b:只查找可執行文件
    -m:只查找幫助文件
    舉個例子來看下,
    命令:whereis ls
    結果:ls: /bin/ls /usr/share/man/man1/ls.1.gz表明ls命令在bin/ls,幫助文檔為/usr/share/man/man1/ls.1.gz
    加選項‘-b’就只顯示/bin/ls,加‘-m’就只顯示/usr/share/man/man1/ls.1.gz
  • whereis只能用來搜索系統命令,不能用來搜索文件。
  • 借此再看2個常用命令:
    命令:who am i 結果:chenfei pts/0 2016-05-29 16:36 (10.0.2.2)
    命令:whatis ls 結果:ls (1) - list directory contents
    命令的意思根據英文就能理解個差不多了。
  • 下面再來說一下which。which命令也是用來搜索系統命令的,它不能顯示命令的幫助文檔的路徑,不過它可以顯示命令的別名,前提是別名存在的話。

3.find

  • find用來搜索文件,命令格式:find [搜索范圍] [搜索條件]
  • find / -name test.php 這條命令表示搜索根目錄下的‘test.php’文件,如果存在'test.php.bak'也不會搜索到。要想進行模糊搜索,需要使用通配符。
    (1)‘*’ 匹配任意內容。 find /root -name "test.php*"搜索root目錄下的包含‘test.php’的文件。如果‘test.php.bak’也在root目錄下,也可以被搜到。
    (2)‘?’匹配任意一個字符。
    (3)‘[]’匹配任意一個中括號之內的字符。find /root -name "ab[cd]",這種情況下如果root目錄下存在abc和abd文件,那么兩者都可以被搜到。
  • find /root -iname "tEst.php"不區分大小寫搜索。
  • find /root -user root搜索所有者為root的文件
  • find /root -nouser搜索沒有所有者的文件
  • find /var/log/ -mtime +10搜索10天前修改的文件。
    “-10” 10天內修改文件;“10”10天那天修改文件;“+10”10天前修改的文件。
    還有幾個類似選項:“-atime”文件訪問時間;“-ctime”改變文件屬性;
  • find . -size 25k搜索當前目錄下文件大小是25kb的文件。
    “-25k”小于25kb的文件;“25k”等于25kb的文件;“+25k”大于25kb的文件
  • find . -inum 262332查找當前目錄下i節點是262332的文件。
  • find /root -size +20k -a -size -50k搜索root目錄下,大于20kb并且小于50kb的文件。
    “-a” and 邏輯與,兩個條件都滿足;“-o” or 邏輯或,兩個條件滿足一個即可。
  • find /root -size +20k -a -size -50k -exec ls -lh {} \;搜索root目錄下,大于20kb并且小于50kb的文件,并顯示詳細信息。
    -exec 命令 {} \;表示對搜索結果執行相應的操作。
  • find命令功能很強大,但是相對locate命令,它消耗系統資源也比較嚴重,尤其是當搜索范圍比較大的時候。

4.grep

  • 格式:gerp [選項] 字符串 文件名
    grep命令主要用來在文件當中匹配符合條件的字符串。
    “-i”表示忽略大小寫;“-v”表示排除指定字符串。
  • 再來看一下它和‘find’的區別:
    find:在系統中搜索符合條件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
    grep:在文件當中搜索符合條件的字符串,如果需要匹配,使用正則表達式進行匹配,正則表達式時包含匹配(模糊匹配)。
  • 通過管道符將find和grep命令結合起來使用有時會起到事半功倍的效果。

以上就是linux幾個常用搜索的命令,你學會了嗎?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容