寻找文件
快速尋找文件
尋找命令存儲(chǔ)位置
如果調(diào)用一個(gè)沒有路徑的命令時(shí),想知道它在文件系統(tǒng)的位置如何,可以使用type命令:
$ type gcc gcc is /usr/bin/gcc $ type type type is a shell builtin $ type newgcc newgcc is aliased for /usr/test/bin/gcc $ type myfunc func is a function $ type foobar -bash: type: foobar: not found由于type命令為內(nèi)部Shell命令,所以它認(rèn)得別名與函數(shù)。
find用法
find介紹
語法find [files-or-directories] [options] 用途尋找與指定名稱模式匹配或具有給定屬性的文件 主要選項(xiàng)-atime n選定n天前訪問的文件-ctiom n選定n天前改過inode的文件-follow接著符號(hào)性連接-group g選定組g內(nèi)的文件(g為用戶組ID名稱或數(shù)字)-links n選定擁有n個(gè)直接鏈接的文件-ls產(chǎn)生類似ls形式的列表,而不是只有文件名。-mtime選定n天前修改過的文件-name 'pattern'選定文件名與模式匹配的文件-perm mask選定與指定八進(jìn)制權(quán)限掩碼匹配的文件-prune不向下遞歸到目錄樹狀結(jié)構(gòu)里-size n選擇大小為n的文件-type t選定類型為t的文件,類型是單一字母:d為目錄、f為文件、l為符號(hào)性連接。-user u選定用戶u擁有的文件(u為用戶ID名稱或編號(hào)) 注意(1)由于find默認(rèn)會(huì)向下尋找目錄,所以當(dāng)它在大型文件系統(tǒng)中尋找時(shí),會(huì)花費(fèi)很長(zhǎng)的執(zhí)行時(shí)間。(2)find輸出的是未排序的結(jié)果。find與其他UNIX命令最大的不同之處在于:要查找的文件與目錄,要放在參數(shù)列表的第一位,且目錄幾乎是遞歸地向下深入(尋找)。最終要顯示而選定名稱的選項(xiàng)或操作放在命令行的最后。
find不同于ls的地方是:
- 它沒有隱藏文件的概念,也就是說:就算是點(diǎn)號(hào)開頭的文件名,find還是能找到它。
- find不排序文件名。它只是以它讀到目錄的順序依次顯示,因此,可以得到find命令之后,通過管道加入步驟。
- 當(dāng)find處理的是目錄時(shí),它會(huì)自動(dòng)遞歸深入目錄結(jié)構(gòu),除非使用-prune選項(xiàng)。
當(dāng)find找到文件要處理時(shí),它會(huì)先執(zhí)行命令行選項(xiàng)所設(shè)置的選擇限制,入股這些測(cè)試成功,則將名稱交給內(nèi)部的操作程序處理。默認(rèn)操作是將名稱打印在標(biāo)準(zhǔn)輸出上。舊的的find實(shí)現(xiàn)會(huì)要求明確地指出-print選項(xiàng),才能產(chǎn)生輸出。
下面的例子單純使用find尋找當(dāng)前目錄樹下的所有東西:
$ ls # 確認(rèn)這是一個(gè)空目錄 $ mkdir -p sub/sub1 # 建立一個(gè)目錄樹 $ touch one two .uno .dos # 在該目錄下建立一些空文件 $ touch sub/three sub/sub1/four # 在樹狀結(jié)構(gòu)較深層的地方建立一些空文件 $ find # 從此開始尋找所有東西 . ./two ./.dos ./sub ./sub/sub1 ./sub/sub1/four ./sub/three ./.uno ./one使用sort進(jìn)行排序:
$ find | LC_ALL=C sort . ./.dos ./.uno ./one ./sub ./sub/sub1 ./sub/sub1/four ./sub/three ./two設(shè)置LC_ALL=C取得ASCII排序順序。
-ls選項(xiàng),可得到如指定了ls -liRs的輸出結(jié)果。不過,它缺乏進(jìn)一步的選項(xiàng)控制這個(gè)冗長(zhǎng)顯示的格式:
$ find -ls 2055172 4 drwxrwxr-x 3 weblogic weblogic 4096 7月 11 17:07 . 4501908 0 -rw-rw-r-- 1 weblogic weblogic 0 7月 11 17:07 ./two 4501910 0 -rw-rw-r-- 1 weblogic weblogic 0 7月 11 17:07 ./.dos 2055173 4 drwxrwxr-x 3 weblogic weblogic 4096 7月 11 17:07 ./sub 2055174 4 drwxrwxr-x 2 weblogic weblogic 4096 7月 11 17:07 ./sub/sub1 4568789 0 -rw-rw-r-- 1 weblogic weblogic 0 7月 11 17:07 ./sub/sub1/four 3755216 0 -rw-rw-r-- 1 weblogic weblogic 0 7月 11 17:07 ./sub/three 4501909 0 -rw-rw-r-- 1 weblogic weblogic 0 7月 11 17:07 ./.uno 4501907 0 -rw-rw-r-- 1 weblogic weblogic 0 7月 11 17:07 ./one這里以ls顯示相同的文件數(shù)據(jù):
$ ls -liRs * 4501907 0 -rw-rw-r-- 1 jones devel 0 07-11 17:07 one 4501908 0 -rw-rw-r-- 1 jones devel 0 07-11 17:07 twosub: 總計(jì) 4 2055174 4 drwxrwxr-x 2 jones devel 4096 07-11 17:07 sub1 3755216 0 -rw-rw-r-- 1 jones devel 0 07-11 17:07 threesub/sub1: 總計(jì) 0 4568789 0 -rw-rw-r-- 1 jones devel 0 07-11 17:07 four現(xiàn)在給find命令一些文件模式:
find -name 'o*' ./one $ find sub sub sub/sub1 sub/sub1/four sub/three抑制目錄向下尋找的功能:
$ find -prune # 不要在此目錄下尋找 . $ find . -prune # 同上(另一種方式) . $ find * -prune # 尋找目錄下的文件 one sub two $ ls -d * one sub two注意,沒有文件或目錄參數(shù),是等同于當(dāng)前的目錄,所以前兩個(gè)例子只會(huì)報(bào)告該目錄。然而,星號(hào)會(huì)匹配每一個(gè)非隱藏文件,所以第三個(gè)find的運(yùn)行,就如同ls -d,只不過它是一行顯示一個(gè)文件。
-group或-user選項(xiàng)需要一個(gè)接著的負(fù)號(hào)或數(shù)值識(shí)別碼。因此,find / -user root會(huì)在root擁有的整個(gè)樹狀結(jié)構(gòu)中查找文件。find $HOME/. ! -user $USER,這條命令的意思是:從我的根目錄開始,列出所有不屬于我的文件。這里使用$HOME/.而非$HOME,使得如果$HOME為符號(hào)連接,命令也可正常運(yùn)行。
-perm需要接上一個(gè)八進(jìn)制字符串的權(quán)限掩碼,其可以具有選用的正/負(fù)號(hào)。如掩碼不帶任何正負(fù)號(hào),則必須有確實(shí)的匹配權(quán)限。如果為負(fù)號(hào),則所有的位設(shè)置都必須匹配。如果為正號(hào),則至少有一個(gè)位設(shè)置要匹配。如:
-perm -002 尋找(所有者與組外)其他人可寫入的文件 -perm -444 尋找任何人都可讀取的文件 ! -perm -444 尋找任何人都無法讀取的文件 -perm 444 尋找權(quán)限為r--r--r--的文件 -perm +007 尋找其他人可訪問的文件 ! -perm +007 尋找其他人無法訪問的文件-size選項(xiàng)必須接上一個(gè)數(shù)字參數(shù)。默認(rèn)值是以512字節(jié)為單位的大小,不過,允許在數(shù)字之后加上c(字節(jié))、k(KB)。如果數(shù)字未帶有正負(fù)號(hào),則指的是必須確實(shí)匹配于該文件大小;如果為負(fù),則只有小于該數(shù)字(絕對(duì)值)的文件大小是匹配的;如果帶有正號(hào),則只有大于該容量的文件才匹配。所以find $HOME/. -size +1024k會(huì)在當(dāng)前目錄樹下的所有文件中,尋找是否有大于1MB的,而find . -size 0則是尋找當(dāng)前目錄下的所有文件是是空的。
-type選項(xiàng)必須接上一個(gè)字母參數(shù),以表明文件類型。較重要的幾個(gè)為d的目錄、f的一般文件,以及l(fā)的符號(hào)連接。
-links選項(xiàng)要求接上一個(gè)整數(shù)。如未指定正負(fù)號(hào),會(huì)只選擇具有指定數(shù)量的直接連接的文件;如果為負(fù)號(hào),則只尋找連接數(shù)小魚該數(shù)字(絕對(duì)值)的文件;如果為正號(hào),則僅選擇連接數(shù)大于該數(shù)的文件。如,尋找具有直接鏈接的文件:find . -links +1。
-atime(訪問時(shí)間)、-ctime(inode變更時(shí)間)與-mtime(修改時(shí)間)必須接上一個(gè)以天為單位的整數(shù)。未指定正負(fù)號(hào),即指確實(shí)的幾天前;如果為負(fù),則只少于該天數(shù)(絕對(duì)值);為正則大于該天數(shù)。find . -mtime +7可尋找一周前修改過的文件。
-newer file,可以選擇比指定文件更接近最近時(shí)間修改過的文件。如果要的單位比這個(gè)時(shí)間還精細(xì),可以建立一個(gè)空文件touch -t date_time timestampfile,然后以此文件搭配使用-newer選項(xiàng)。如果要找的是比該文件更舊的文件,使用否定項(xiàng)即可:! -newer timestampfile。
find命令的選擇器項(xiàng)可以合并使用,如另外配置-a(AND)選項(xiàng)或-o(OR)選項(xiàng)。
# 尋找文件大小塊小于10的非空文件 $ find . -size +0 -a -size 10 # 尋找空文件,或過去一年未讀取過的文件 $ find . -size 0 -o -atime +365find示例腳本
轉(zhuǎn)載于:https://www.cnblogs.com/liangyonglu/p/5690736.html
總結(jié)
- 上一篇: Java 分页通用
- 下一篇: nginx详细配置文件 (转)