今天趁空複習了文件查找的相關知識,文件查找對我們來說是很有用的,當我們記不清楚我們把文件放到什麼地方的時候,就可以輕鬆的找到了.這裡就寫下我學過的兩個文件查找的命令,其中有一個是不常用,就簡單說下,然後就重點寫常使用的那個命令.
在Linux中文件查找主要有:locate,find這兩個命令.先說說它們的區別吧:
locate :這個命令是非實時,非精確的查找,是依賴資料庫查找的.
find :實時,精確的查找.速度可能有些慢.
簡單說下locate命令吧!locate是依賴資料庫查找的,上面我們已經說過了,這就意味著,如果沒有這個資料庫,那麼我們就無法使用這個命令來進行查找了.而反之,資料庫有了,但是沒到更新時間的時候,我們的文件沒了.那麼在資料庫中依然存有這條記錄,我們依然可以用這個命令在資料庫中查找到,但是卻無法真正的找到這個文件,這就是這個命令的短處了.它的使用格式是:locate Keyword :命令加關鍵字就行了,另外,
Linux系統會在默認的時間更新這個資料庫,不過我們也可以手動更新,使用:updatedb這個命令就行了,這個命令就說到這吧!下面是重頭戲了,find命令,就是那個常用的命令了.Find命令不僅可以指定文件名進行查找,還可以根據指定路徑、文件類型、文件大小、文件的更改時間.還能組合條件進行查找.查找出來的內容默認顯示在屏幕上.
命令格式:
find [dir1,…] [criteria,…] [action…] :dir:目錄;criteria:標準(就是根據什麼來查找,如姓名..);action:動作.例如:#find /etc –name “passwd” :就是查找
/etc目錄下passwd的文件.目錄什麼的沒什麼好說的,就來說說criteria:
依據文件的名字查找:
-name :依據文件名查找,並且嚴格區分大小寫,並且是精確查找.而且支持globbing方式的文件名通配.例如:
#find /etc –name “passwd*” :查找/etc目錄下passwd開頭的文件;
-iname :不區分字母大小寫,方法如-name;
-regex “PATTERN” :依據正則表達式查找;
依據文件的屬主、屬組查找:
-user :依據用戶來查找,就是查找屬於指定的用戶的文件;例如:
#find /tmp –user redhat :查找/tmp目錄下屬於redhat用戶的文件;
-group :依據用戶組來查找,就是查找屬於指定的用戶組的文件;
-uid :依據用戶UID來查找,也是查找指定的用戶的文件,不過是指定用戶的UID而已;例如:#find /var/tmp –uid 323 :查找/var/tmp目錄下,與uid323對應的用戶的所有文件;
-gid :依據用戶組的GID來查找;
-nouser :查找所有沒有屬主的文件;
-nogroup :查找所有沒有屬組的文件;
依據文件的類型查找:
-type :依據文件的類型來查找文件:
f :普通文件;
d :目錄文件;
l :鏈接文件;
b :塊設備文件;
c :字元文件;
p
:管道文件;s :套接字文件;
例:#find /tmp –type s :查找/tmp目錄下所有文件類型是套接字的文件.
依據文件大小查找:
-size :根據文件大小進行查找,默認單位是位元組;
單位有k|M|G
例如:#find /tmp –size 10M :查找/tmp目錄下,文件大小大於9M,小於等於10M的文件,為什麼舉這個例子呢?就是這點有些特殊.我們查找小於10M
的文件和大於10M的文件的例子分別如下:#find /tmp –size -10M ;#find /tmp –size 10M.對,就是在10M前加個-號或 號來表示小於10M或大於 10M的.依據時間查找:
-atime :依據文件的訪問時間來查找文件;
-mtime :依據文件的修改時間來查找文件;
-ctime :依據文件的改變時間來查找文件;
默認單位是天,例如:
#find /tmp –atime 3 :查找/tmp目錄下,正好距此時三天被訪問過的文件;
#find /tmp –atime -3 :查找/tmp目錄下,在距此時三天內被訪問過的文件;
#find /tmp –atime 3 :查找/tmp目錄下,在距此時三天前被訪問過的文件,也就是距此時三天內沒有被訪問過的文件;
-amin 、-mmin 、-cmin :與-atime等一樣,只不過默認時間是分鐘,代換一下就知道這些命令的使用方法了.
依據文件的許可權查找:
-perm :依據文件的許可權來進行文件查找;例如:
#find /tmp 755 : 查找/tmp目錄下,所有許可權位都滿足的文件;
#find /tmp 755(/755) :查找/tmp目錄下,任何一類用戶某一個許可權位符合條件的文件;
#find /tmp -755 :查找/tmp目錄下,所有類別用戶的所有許可權位符合條件.
(註:-002: 這裡的0表示不做檢查)
Criteria說完了就來說說Action:
-print :顯示信息,這是默認選項;
-ls :以長格式顯示信息;
-ok :查找到文件以後,可以指定要執行的命令,會有提醒;
-exec :查找到文件以後,也可以指定要執行的命令,但不會有提醒;
-exec rm {} \; : -exec 加要執行的命令加{} \; ,這是使用格式.記住會用就行.
例如:#find /etc –size 10M –ls :查找/tmp目錄下,大於9M小於等於10M的文件,並將其文件信息以長格式顯示出來;
#find /tmp –nouser –exec rm {} \; :查找/tmp
目錄下,沒有屬主的文件,並將其刪除;說下find支持的組合條件:
-a :與 、-o :或 、
-not :非 :其中,非優先順序最高,與第二,或第三;默認是-a與關係.例如:#find /tmp –name “*lc*” [-a] –user redhat :查找/tmp目錄下,文件名中含有lc字元且屬主是redhat的文件.
額,時間又不早了,就到這吧!我想寫的應該能看懂吧!有些還有待完善,等明天有時間再來補充補充.呵呵.有錯誤提出來哈!睡覺咯!
本文出自 「向日葵」 博客,請務必保留此出處http://rrliang.blog.51cto.com/4214966/782986
[火星人 ] Linux文件查找已經有458次圍觀