大綱
一、前言
二、locate
三、find
一、前言
在windows下,我們查找文件,可以在搜索里面,輸入文件名或通配符就可以進行搜索。在Linux下,要查找文件可以找locate 或 find命令進行查找,而且這些命令還有其他特別的功能。
二、locate
特點:此命令是非實時查找命令,依賴于索引,因此搜索速度快。但是索引的構建是當系統空閑時由系統自動進行,是個每天任務。因此,你搜索的文件若是索引構建后有變化的,那樣就有問題。構建索引可以手動進行,命令:updatedb(有點類似make whatis),但是構建索引需要時間,長短由系統情況而定。
舉例:
查找文件ubuntu
發現,只要在路徑名中帶有關鍵字,或基名帶關鍵字的,都可以被搜索出來,因此,此命令用的不多。
三、find
特點:實時遍歷各個文件查找,速度慢于locate.屬于精確查找。
命令:find [option]… [查找路徑] [查找條件] [處理動作]
查找路徑: 默認當前目錄
查找條件:
-name 文件名稱:支持globbing字符 -user USERNAME: 根據文件的屬主查找 -group GRPNAME:根據文件的屬組查找 -uid UID:根據UID 查找 -gid GID:根據GID查找 -nouser :查找沒有屬主的文件 -nogroup :查找沒有屬組的文
舉例子說明下:
按文件名查找,默認是本路徑下:
跟locate不一樣,只會在文件名那里才會出現要搜索的文件
其他的類似。
下面介紹下沒有屬主和沒有屬組的文件:如果把一個用戶刪除,在屬主、屬組的位置將被數字代替:
因此,查找的時候使用-nouser -nogroup 可以查找到相應的文件
組合條件查找
與:-a,同時滿足條件(可省略) 或:-o,滿足一個即可 非:-not / !,條件取反
或者
注意,括號需要轉義 \( \)
-type 根據文件類型查找
f: 普通文件 d: 目錄文件 l: 符號鏈接 b: 塊設備 c: 字符設備 s: 套接字文件 p: 命名管道 比如:查找 /dev 下的字符設備:
-size 根據文件大小查找(常用單位 K M G)
= # :如=2 ,顯示范圍x 1 <x<=2 + # :如+2 ,顯示范圍x >2 - # :如-2 ,顯示范圍x <=1
舉例:查找3k-4K(含)以內的文件
以時間為單位查找(天為單位)
-atime +# :如+2 3天以前 =# :如 2 2-3天 -#:如-2 2天之內 -mtime -ctime
舉例
查找修改時間是11天前的文件
根據權限查找
-perm [+/-] MODE + 任何一類用戶的權限只要能包含對其指定的任何一位權限即可 - 每類用戶指定的檢查權限都匹配
舉例
查找其他用戶有執行權限的文件
查找所有用戶都沒有寫權限的文件,因為+的權限是或,前面加個非,就變成了與
執行動作
看到了我上面的例子,有些在后面加了-ls,這就是執行動作的一種
-print: 默認處理動作,顯示 -ls :類似于ls -l -exec COMMOND {}\; :表示對查找的內容進行處理的動作,{}表示查找到的內容的引用
當然我們也可以將查找到的文件直接刪除,該權限等等。但是要注意的是,如果直接刪除是沒有命令交互提示的。
在使用find命令的-exec選項處理匹配到的文件時, find命令將所有匹配到的文件一起傳遞給exec執行。但有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令運行幾分鐘之后,就會出現 溢出錯誤。錯誤信息通常是“參數列太長”或“參數列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。
find | xargs COMMAND
以上是一些文件查找的用法和體會,在今后的學習中,還會繼續慢慢體會。
原創文章,作者:麥鯨,如若轉載,請注明出處:http://www.www58058.com/3998
標簽其實應該認真寫,增加seo率才能提高貢獻率
@stanley:好的,一定注意。謝謝老師~!