Linux常用命令介紹(搜尋命令)

頭像是我偶像發表於2017-05-21

一、檔案搜尋命令

1.1 檔案搜尋命令locate

在後臺資料庫中按檔名搜尋,只可以搜尋檔名,搜尋功能簡單,但搜尋速度快,命令格式為:

locate [檔名]

問題一:centOS系統找不到locate命令

locate: command not found

解決方法:
原因是系統中沒有安裝mlocate這個包。
* 第一步:安裝mlocate包

yum -y install mlocate

會出現下面正在安裝該包的資訊,等待一會,直到出現Complete!就表示安裝完成了。

* 第二步:更新資料庫

updatedb
* 第三步:就可以使用locate命令了

[root@localhost ~]# locate install.log
/root/install.log
/root/install.log.syslog

問題二:當在某些目錄下建立檔案,然後更新資料庫之後,並不能用locate命令查詢到

原因是系統在更新資料庫的配置檔案中,設定了一些搜尋限制,所以搜尋不到,輸入如下命令可以看到:

[root@localhost ~]# vi /etc/updatedb.conf

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 gpfs 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"

/etc/updatedb.comf配置檔案

  • PRUNE_BIND_MOUNTS = “yes” 表示開啟搜尋限制,如果為’no’則表示不開啟搜尋限制;
  • PRUNEFS = 表示搜尋時,不搜尋的檔案系統;
  • PRUNENAMES = 表示搜尋時,不搜尋的檔案型別;
  • PRUNEPATHS = 表示搜尋時,不搜尋的路徑;
    不只locate命令遵循搜尋限制,whereis與which也遵循

1.2 whereis與which命令

whereis與which命令是用來搜尋命令的

whereis [命令]
檢視命令所在的地址

1.3 find命令

find命令功能強大,而且搜尋範圍廣,搜尋速度相對較慢。一般都精確查詢,只有加上萬用字元之後才能進行模糊查詢。命令格式如下:

find [搜尋範圍][搜尋條件]

[搜尋條件]有如下幾種:

1. 舉例

find /home/ -name test
查詢名為’test’的檔案檔案或目錄

  • -name 檔案或目錄名稱

名稱中可以使用萬用字元
* * 匹配任意內容
* ? 匹配任意一個字元
* [] 匹配任意一箇中括號內的字元

2. 舉例:

find /var/log/ -mtime +10
表示查詢10天前修改的檔案

  • -atime 檔案訪問時間
  • -ctime 改變檔案屬性
  • -mtime 修改檔案內容

其中:
* -10 10天內修改的檔案
* 10 10天當天修改的檔案
* +10 10天前修改的檔案

3. 舉例

find . -size 25k
查詢所有檔案大小為25KB的檔案

  • -25k 小於25KB的檔案
  • 25k 等於25KB的檔案
  • +25k 大於25KB的檔案

4. 舉例

find . -inum 255673
查詢i節點是255673的檔案

5. 舉例

find /etc -size +20k -a -size -50k

查詢/etc目錄下大於20K並且小於50K的檔案或者目錄

  • -a 邏輯與,兩個條件都滿足
  • -r 邏輯或,兩個條件滿足一個即可

6. 舉例

find /etc -size +20k -a -size -50k -exec ls -l {} \

查詢/etc目錄下大於20K並且小於50K的檔案或者目錄,並且顯示檔案的詳細資訊

  • -exec ** {} \ 表示對搜尋結果執行相應的操作;

7. 舉例

find /root -iname install.log

檔名稱不區分大小寫;

8. 舉例

find /root -user root

查詢所有者為root的檔案

9. 舉例

find /root -nouser

查詢沒有所有者的檔案

1.4 grep命令

指在檔案中匹配符合條件的字串,格式如下:

grep [選項] 字串 檔名

[選項]:
* -i 忽略大小寫
* -v 排除指定字串

[root@localhost ~]# cat /home/zixuan/learn/test.hard
this is a test file;
111111
111111
those are there
[root@localhost ~]# grep "th" /home/zixuan/learn/test.hard
this is a test file;
those are there
[root@localhost ~]# grep -v "th" /home/zixuan/learn/test.hard
111111
111111

find命令與grep命令的區別

  • find命令:在系統當中搜尋符合條件的檔名,如果需要匹配使用萬用字元匹配,並且萬用字元是完全匹配;
  • grep命令:在檔案當中搜尋符合條件的字串,如果需要匹配使用正則表示式進行匹配,並且正規表示式是包含匹配;

相關文章