歡迎您光臨本站 註冊首頁

Linux文件查找

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

今天趁空複習了文件查找的相關知識,文件查找對我們來說是很有用的,當我們記不清楚我們把文件放到什麼地方的時候,就可以輕鬆的找到了.這裡就寫下我學過的兩個文件查找的命令,其中有一個是不常用,就簡單說下,然後就重點寫常使用的那個命令.

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次圍觀

http://coctec.com/docs/linux/show-post-47149.html