Find命令使用详解
?Find命令使用詳解
Find是Linux中查找文件的命令,“find”命令能幫助我們在使用,管理Linux的日常事務(wù)中方便的查找出我們需要的文件。
Find?命令的特點:實時、精確、支持眾多查找標(biāo)準(zhǔn)、遍歷指定目錄中的所有文件完成查找,速度慢;
Find?命令的格式:find??查找路徑?查找標(biāo)準(zhǔn)?查找到以后的處理運作
查找路徑:默認為當(dāng)前目錄
查找標(biāo)準(zhǔn):默認為指定路徑下的所有文件
處理運作:默認為顯示
Find的匹配標(biāo)準(zhǔn):
? ? ? ?通過文件名查找:
????-name?'FILENAME':對文件名作精確匹配
????如:查找/etc目錄下的passwd這樣的文件,命令為:find?/etc?-name?'passwd'??
使用-name對文件名查找的時候還支持對文件名的通配
文件名通配符:“*”任意長度的任意字符、“?”任意單個字符、“[]”匹配指定范圍內(nèi)的任意單個字符,等等
如:查找/etc目錄下以passwd結(jié)尾的文件,命令為:find?/etc?-name?'*passwd'?,這樣在/etc目錄下以passwd這幾個字母結(jié)尾的所有文件都會被顯示出來
查找/etc目錄下以passwd開頭的文件,命令為:find?/etc?-name?'passwd*'
-iname?'FILENAME':?文件名匹配時不區(qū)分大小寫
-regex?PATTERN:基于正則表達式進行文件名匹配
?
????根據(jù)屬主、屬組查找:
-user?USERNAME
如:查找在/tmp目錄下屬主屬于root的用戶,命令為:find?/tmp?-user?root
-group?GROUPNAME
如:查找在/tmp目錄下屬組屬于root的用戶,命令為:find?/tmp?-group?root
?
根據(jù)UID、GID查找:
-uid?UID?、-gid?GID
如果某個用戶被刪,那么以前所有屬于這個用戶的文件的的屬主都會變成此前這個用戶的ID號,因此這個時候再根據(jù)這個屬主就找不到這樣的文件了,此時只能根據(jù)它的ID號來查找。如:find?/tmp?-uid?2003??這樣就會把ID號為2003的給查找出來。
-nouser:查找沒有屬主的文件
????如:find?/tmp?-nouser???查找/tmp目錄下沒有屬主的用戶
-nogroup:?查找沒有屬組的文件
如:find?/tmp?-nogroup???查找/tmp目錄下沒有屬組的用戶
?
根據(jù)文件類型來查找:
-type?
f:?普通文件、d:?目錄文件、b:?塊設(shè)備文件?(block)、c:?字符設(shè)備文件?(character)、l:?符號鏈接文件(symbolic?link?file)、p:?命令管道文件(pipe)、s:?套接字文件(socket)
如:我們查找一下/tmp目錄下的目錄文件,命令為:find?/tmp?-type?d?
????
? ? 根據(jù)文件的大小來查找:
????-size?
通常情況下-size后面都會跟一些數(shù)字和單位如:#k、#M、#G,如不跟單位默認為字節(jié),這些數(shù)字還可以用+、-號來修飾,如:+10k、-10k,意思是大于10k、小于10k,如果不帶+、-號則表示精確為10k。如果我們查找條件為10k時,那么9k到10k之間的都會被默認為10k;如果條件為+10k則表示所有大于10k的文件;如果條件為-10k則表示所有小于10k的文件。格式為:find?/etc?-size?10k、find?/etc?-size?+10k 、find?/etc?-size?-10k。
????
? ? ? ?組合條件:
-a?(與)、-o?(或)、-not(非)
????如:我們找一找/tmp目錄下沒有屬主并且類型為目錄的文件
命令則是?find?/tmp?-nouser?-a?-type?d??這里就用到了-a(與),如果把-a改為-o則表示/tmp目錄下沒有屬主或者類型為目錄的文件,兩個條件滿足一個即可。如果要查找不是目錄的文件只需在前面加-not即可。如:find?/tmp?-not?-type?d??
????根據(jù)文件的時間戳來查找:
-mtime(修改時間)、-ctime(改變時間)、-atime(訪問時間),后面跟數(shù)字,數(shù)字前面還可以用+、-號來修飾。如:“-atime?5”表示離此刻為止剛好五天訪問過“-atime?+5”表示至少有五天沒有訪問過了、“-atime?-5”表示五天之內(nèi)訪問過。還有另外一組(-mmin、-cmin、-amin)此用法一樣只是表示的時間為分鐘,(‘time’表示天、‘min’表示分鐘)。
如:查找/tmp?目錄下在五天之內(nèi)被訪問過的文件,即:find?/tmp?-atime?-5???
?
根據(jù)文件的權(quán)限來查找:
-perm?MODE
-perm?MODE:精確匹配
-perm?/MODE:?任意一位匹配即滿足條件
????-perm?-MODE:?文件權(quán)限能完全包含此MODE時才符合條件
如:我們查找當(dāng)前目錄下文件權(quán)限為644的文件,即:find?./?-perm?644
????運作:
? -print:?顯示
-ls:類似ls?-l的形式顯示每一個文件的詳細
????如果我們想在查找到的文件上執(zhí)行其他的命令則用到下面的命令:
-ok?COMMAND?{}?\;?每一次操作都需要用戶確認,也可以用-exec?COMMAND?{}?\;
????如果我們要操作那個文件,并在這個命令格式中需要引用那個文件的話就要使用{}作為文件名稱占位符。
????在這里強調(diào)一點一定要引用“\;”結(jié)尾,否則為語法錯誤
如:在當(dāng)前目錄下找到其他用戶能夠讀寫的用戶,把這些用戶的寫權(quán)限給去掉
find?/?-perm?-006?-exec?chmod?o-w?{}?\;??“{}”是引用查找到的文件?
?
下面是幾個練習(xí)題:
1、查找/var目錄下屬主為root并且屬組為mail的所有文件;
find?/var?-user?root?-group?mail
2、查找/usr目錄下不屬于root,bin,或student的文件;
find?/usr?-not?-user?root?-a?-not?-user?bin?-a?-not?-user?student
find?/usr?-not?\(?-user?root?-o?-user?bin?-o?-user?student?\)
3、查找/etc目錄下最近一周內(nèi)內(nèi)容修改過且不屬于root及student用戶的文件;
find?/etc?-mtime?-7?-not?\?(?-user?root?-o?-user?student?\)
find?/etc?-mtime?-7?-not?-user?root?-a?-not?-user?student
4、查找當(dāng)前系統(tǒng)上沒有屬主或?qū)俳M且最近1天內(nèi)曾被訪問過的文件,并將其屬主屬組均修改為root;
find?/?\(?-nouser?-o?-nogroup?\)?-a?-atime?-1?-exec?chown?root:root?{}?\;?
5、查找/etc目錄下大于1M的文件,并將其文件名寫入/tmp/etc.largefiles文件中;
find?/etc?-size?+1M?>>?/tmp/etc.largefiles
6、查找/etc目錄下所有用戶都沒有寫權(quán)限的文件,顯示出其詳細信息;
find?/etc?-not?-perm?/222?-ls
轉(zhuǎn)載于:https://blog.51cto.com/lbxiaoxin/1151428
總結(jié)
以上是生活随笔為你收集整理的Find命令使用详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到喝童子尿预示什么
- 下一篇: Xen的起源与工作原理