在這篇文章中你將看到以下內容:1、find命令的格式、語法、及實際應用
2、3個時間戳的意義
3、各種文件類型的解釋
4、軟硬鏈接的區別
5、exec和xargs的區別
6、幾個邏輯判斷符的意義
7、通配符的意義
8、find 命令下時間查找的特殊定義
首先,來看看以下題目: 將文件/tmp/b目錄下c文件以外的所有文件壓縮打包到/home/a下,名字為a-日期(2016-03-16).tar.gz
首先搭建好測試環境:
[root@desperadochn home]# mkdir -p /tmp/b [root@desperadochn home]# cd /tmp/b [root@desperadochn b]# touch {a..g} [root@desperadochn b]# lsa b c d e f g [root@desperadochn b]# cd /home/ [root@desperadochn home]# mkdir a [root@desperadochn home]# ls -l 總用量 0drwxr-xr-x. 2 root root 6 3月 19 10:07 a
給出解法:
[root@desperadochn b]# find /tmp/b/ ! -name "c" -type f |xargs tar -czf /home/a/a-2016-03-16.tar.gz #find命令 加上條件判斷 !排除 文件名為c 且類型為普通文件的文件 用xargs傳參數 用tar打包壓縮 root@desperadochn b]# ls -l /home/a/ #查看壓縮包是否建立 總用量 4 -rw-r--r--. 1 root root 166 3月 19 10:32 a-2016-03-16.tar.gz [root@desperadochn b]# tar -tf /home/a/a-2016-03-16.tar.gz #查看壓縮包中文件內容 tmp/b/a tmp/b/b tmp/b/d tmp/b/e tmp/b/f tmp/b/g
這里我們引出一個重要的命令,它非常重要,它和其他命令組合或者自己能實現很多應用,
它就是find命令
what is 這是什么?
find 顧名思義 命令的含義是幫助尋找某樣東西。find是一種實時查找工具,通過遍歷指定路徑下的文件系統完成文件查找。他有如下工作特點:
1、查找速度略慢;
2、精確查找;
3、實時查找;
why 我們為什么使用它?
人們為何使用find 命令主要因為以下工作特性:
1、精確查找
2、實時查找
其次為了應對各種各樣層出不窮的查找需求其命令功能異常強大,然而也異常復雜,這可能是linux/Unix系統中最復雜的命令之一了。
這就是我今天寫這篇總結的原因了, 非常強大,非常復雜,易學難精,在工作中極其有用 ,必須好好學習,好好總結。
when 何時使用?
1、當你需要實時查找某些文件時。
2、當你需要從海量文件中排除你不需要的文件時,他支持通配符和條件判斷語句哦。
3、當你需要精確查找某個文件時。
4、當你淹沒在海量的文件中,忘記了文件名但是記得文件的其他信息 也許該命令可以幫到你。
where 我們在哪里可以使用它?
1、任何linux/unix ,unix like系統都可以使用該命令 ,這是一條非常古老且經典的命令。
2、是的 蘋果筆記本的osx系統中也可以使用該命令哦,我試過了,只需要打開終端。。。。。。。
3、但是有一點千萬謹記,他是一個消耗系統資源較大的命令,如果搜尋的范圍巨大的話,請在空閑的午夜進行,特別是在生產環境中的服務器中,因為他很可能會造成服務器宕機。
who 誰會使用?
1、淹沒在海量文件中的管理員,特別是命名冗長的日志文件、備份文件啥的。老天這些文件不好找也不好記。
2、他的功能非常強大能幫有經驗的管理員省很多事。
how 如何實現?
首先說明下find命令的格式:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]
The -H, -L and -P options control the treatment of symbolic links # man文檔里面寫明了 -H、-L、-P控制了 find命令處理符號鏈接的級別
The five `real' options -H, -L, -P, -D and -O must appear before the first path name #這些 -H -D -L -P -O 必須放在文件名的前面。
-P:永遠不跟蹤符號鏈接,這是默認選項。
-L:跟蹤符號鏈接。
-H:不跟蹤符號鏈接 除非用命令對數據加以判定
所謂跟蹤符號鏈接是指:若被搜索的目錄下有一個符號鏈接,且指向另一個目錄,那么被指向的目錄也將被搜索。
如果指定多條上述選項,只生效最后一條
[-D debugopts] 打印診斷信息,這對你診斷為什么find命令·沒有達到你的預期非常有幫助。診斷選項列表會用“,”分開。
有效的debug選項包括:
help :解釋debug選項 #Explain the debugging options
tree:用最原始且最優的組織顯示其表達樹 # Show the expression tree in its original and optimised form.
stat:尋找程序試圖最小化這樣的調用 #Print messages as files are examined with the stat and lstat system calls. The find program tries to minimise such calls.
opt:打印診斷信息,有關表達式樹的優化 #Prints diagnostic information relating to the optimisation of the expression tree; see the -O option.
rates:打印一個摘要,說明每個判斷的成功或失敗。# Prints a summary indicating how often each predicate succeeded or failed.
-Olevel:支持查詢優化的等級,find程序重新排序測試來加快執行速度的同時保持整體效果。有以下幾個級別:
0:相當于等級1的優化。# Equivalent to optimisation level 1
1:他是默認的優化水平,相對應于傳統的行為 表達式將重新排序,僅根據文件名稱測試的表達式將排第一。#This is the default optimisation level and corresponds to the traditional behaviour. Expressions are reordered so that tests based only on the names of files (for example -name and -regex) are performed first.
2: Any -type or -xtype tests are performed after any tests based only on the names of files, but before any tests that require information from the inode. On many modern versions of Unix, file types are returned by readdir() and so these predicates are faster to evaluate than predicates which need to stat the file first. If you use the -fstype FOO predicate and specify a filsystem type FOO which is not known (that is, present in `/etc/mtab') at the time find starts, that predicate is equivalent to -false. #這個不常用 實在看不懂 有看懂的說一下
3: At this optimisation level, the full cost-based query optimiser is enabled. The order of tests is modified so that cheap (i.e. fast) tests are performed first and more expensive ones are performed later, if necessary. Within each cost band,predicates are evaluated earlier or later according to whether they are likely to succeed or not. For -o, predicates which are likely to succeed are evaluated earlier, and for -a, predicates which are likely to fail are evaluated earlier. #這個不常用 實在看不懂 有看懂的說一下
以上[-H] [-L] [-P] [-D debugopts] [-Olevel] 的選項日常工作中很少用到(老鳥說的,很多國外文獻也沒提),僅僅知道find命令默認工作在-P選項(不跟蹤符號鏈接),1level下。雖然可能沒什么用但是能提升下逼格也是好的。
總結以上內容就是:
find命令其實有兩種options,一種是“真正屬于自己的”,另一種位于expressions內部。第一種選項一共就5個:-P -L -H -D -O,其中-D用來顯示調試信息;-O用來指定優化級別,后面緊跟一個數字(沒有空格),它們倆的具體信息可以看man。而-P -L -H的作用是“control the treatment of symbolic links”,不指定它們中的任意一個時,默認為-P,即不跟蹤鏈接。所謂跟蹤鏈接是指:若被搜索的目錄下有一個符號鏈接,且指向另一個目錄,那么被指向 的目錄也將被搜索。
第二種選項和第一種被path隔開,實際上,第一種選項比較少使用,find后面往往直接就是path,即要搜索的目錄。如果不指定path,默認為當前 目錄。搜索的時候,指定目錄的子目錄也是被搜索的對象,所以path可以視為start_dir??梢酝瑫r指定多個目錄。
因為[-H] [-L] [-P] 這3個選項默認是P 且find默認是運行在1level下的(需要改變模式選項的情況不多),debug選項一般也用不到,因此find命令的格式可以簡化為以下:
find path test actions 或者 find [options…….] [path…] [expression]
查找路徑:指定具體目標路徑;默認為當前目錄;
查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑下的所有文件;
處理動作:對符合條件的文件做什么操作;默認輸出至屏幕;
find命令支持如下功能:
1、 find命令支持組合條件判斷:
與:-a
或:-o
非:-not,!
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
接下來具體說一下幾個邏輯判斷
首先定義真(true)為1,假(false)為0
與:用 &&表示 find命令中用-a表示
含義:相當于生活中說的“并且” 就是兩個條件都同時成立時才為真。
舉例:
1 && 1 =1
1 && 0 =0
0 && 1 =0
0 && 0 =0
或:用 ||表示,在find命令中用-o表示
含義:相當于生活中所說的“或者”,當兩個條件中有任何一個條件滿足時,邏輯或的運算結果為真
舉例:
1 || 1 =1
1 || 0 =1
0 || 1 =1
0 || 0 =0
非:用!表示,在find命令中可以用-not或!表示。
含義:邏輯非即取其本來值得反
舉例:
!1 =0
!0 =1
2、find命令支持-exec和 | xargs傳遞參數給下一個命令
接下來說說-exec和xargs的區別:
exec:把符合前面條件的參數一次性的傳遞給后面的命令,但是有些命令不能一次性接收,此時命令執行可能會失敗,這時 | xargs COMMAND 可以規避此問題。
xargs:把前面的命令的 輸出傳遞給后面命令當作參數, 與exec不同的是 xargs 把參數一個一個傳遞,而非exec的一次性傳遞,而是一個一個的傳遞參數。
3、find也支持通配符及專用字符集合,這會對我們的工作帶來巨大便利,必須熟練掌握它:
通配符:*, ?, []
(1) * :
任意長度的任意字符
(2) ? :
任意單個字符
(3) [] :
匹配指定范圍內的任意單個字符
(4) [^]
匹配指定范圍外的任意單個字符
專用字符集合:
[:digit:]:任意數字,相當于0-9
[:lower:]:任意小寫字母
[:upper:]: 任意大寫字母
[:alpha:]: 任意大小寫字母
[:alnum:]:任意數字或字母
[:space:]:匹配空白字符,包括空格,tab
[:punct:]:標點符號
4、find命令支持按照文件類型來查找文件(定義的文件類型見下表):
字符 | 含義 |
b | 塊設備文件 |
d | 目錄 |
c | 字符設備文件 |
p | 管道文件 |
l | 符號鏈接文件 |
f | 普通文件 |
s | socket文件 |
5、find命令支持以時間來查找文件,linux下定義了3個時間戳:
(1)、概述:
atime :Access time 最后訪問時間 讀取文件內容(stat查看)
ctime:Change time 狀態改變時間 改變文件內容(stat查看)
mtime:Modifty time 最后修改時間 元數據發生改變(stat查看)
它有如下特性: (1)ls -l 顯示的是 mtime
(2)文件的 Access time,atime 是在讀取文件或者執行文件時更改的。對于文件當修改mtime時,ctime必須隨著改變.因為文件大小等都屬性;有人說說atime也一定會改變,要想修改文件必須先訪問;其實是不對的,有不必訪問文件就能修改其內容:如:#echo “This is a test !” >> /etc/issue,issue文件內容會變,但并沒有訪問文件,所以atime并沒有改變.對于目錄,訪問一個目錄其atime改變,mtime ,ctime不變;修改一個目錄,在一個目錄下touch一個文件,mtime與ctime會改變,atime不一定會變;
(3)文件的 Modified time,mtime 是在寫入文件時隨文件內容的更改而更改的。
(4)文件的 Change time,ctime 是在寫入文件、更改所有者、權限或 鏈接設置時隨 Inode的內容更改而更改的。記錄該文件的inode節點被修改的時間。touch命令除了-d和-t選項外都會改變該時間。而且chmod,chown等命令也能改變該值。
6、find命令也支持查找軟硬鏈接 首先說一下inode:理解inode,要從文件儲存說起。文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區"(Sector)。每個扇區儲存512字節(相當于0.5KB)。操作系統讀取硬盤的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。文件數據都儲存在"塊"中,那么很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的創建者、文件的創建日期、文件的大小等等。這種儲存文件元信息的區域就叫做inode,中文譯名為"索引節點"。每一個文件都有對應的inode,里面包含了與該文件有關的一些信息。
軟連接:除了硬鏈接以外,還有一種特殊情況。文件A和文件B的inode號碼雖然不一樣,但是文件A的內容是文件B的路徑。讀取文件A時,系統會自動將訪問者導向文件B。因此,無論打開哪一個文件, 最終讀取的都是文件B。這時,文件A就稱為文件B的"軟鏈接"(soft link)或者"符號鏈接(symbolic link)。這意味著,文件A依賴于文件B而存在,如果刪除了文件B,打開文件A就會報錯:"No such file or directory"。這是軟鏈接與硬鏈接最大的不同:文件A指向文件B的文件名,而不是文件B的inode號碼,文件B的inode"鏈接數"不會因此 發生變化。
硬鏈接: 一般情況下,文件名和inode號碼是"一一對應"關系,每個inode號碼對應一個文件名。但是,Unix/Linux系統允許,多個文件名指向同一個inode號碼。這意味著,可以用不同的文件名訪問同樣的內容;對文件內容進行修改,會影響到所有文件名;但是,刪除一個文件名,不影響另一個文件名的訪問。這種情況就被稱為"硬鏈接"(hard link)。他們有如下不同點:
1、刪除原文件之后,硬鏈接可以繼續使用,軟鏈接就不能使用了。
2、創建硬鏈接和軟連接后,硬鏈接inode號不變,軟連接會變;原文件修改后,硬鏈接和軟鏈接都會被修改。
3、硬鏈接不能指向目錄,而軟連接可以
4、硬鏈接不能跨分區,而軟連接可以。
7、find命令根據時間查找文件的特殊定義,find命令根據時間查找文件除了需要了解3個時間戳之外,還需要了解一些特殊定義,因為所有時間選項都要與一個值n結合使用,指定為-n、n、或+n,其中含義如下:
N * 24 +1 表示 1 * 24 +24小時以外.. +0 表示 0 * 24 +24小時以外 1 表示 1 * 24 + 24 到 24 之間.. 0 表示 0 * 24 + 24 到 0 之間.. -1 表示 0 * 24 +24 內,甚至為未來時間...
舉例:
1.當前時間24小時—當前時間(昨天-今天) #find . -mtime 0 2.當前時間48小時前–當前時間24小時前(前天-昨天) #find . -mtime 1 3.當前時間48小時前(2天前) #find . -mtime +1 4.當前時間24小時–當前時間(昨天-今天) #find . -mtime -1
8、與文件權限及名稱有關的參數:
-name filename:搜尋文件名為 filename 的文件;
-size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的文件。 這個 SIZE 的規格有:c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB還要大的文件,就是『-size +50k 』
-type TYPE :搜尋文件的類型為 TYPE 的, 類型主要有:一般正規文件 (f), 裝置文件 (b, c),目錄 (d), 連結檔 (l), socket (s), 及 FIFO (p) 等屬性。
-perm mode :搜尋文件權限『 剛好等于』 mode 的文件, 這個 mode 為類似 chmod的屬性值, 舉例來說, -rwsr-xr-x 的屬性為 4755 !
-perm -mode :搜尋文件權限『必須要全部囊括 mode 的權限』的文件, 舉例來說,我們要搜尋 -rwxr–r– ,亦即 0744 的文件,使用 -perm -0744,當一個文件的權限為 -rwsr-xr-x ,亦即 4755 時,也會被列出來,因為 -rwsr-xr-x 的屬性已經囊括了 -rwxr–r– 的屬性了。
-perm /mode :搜尋文件權限『包含任一 mode 的權限』的文件, 舉例來說,我們搜尋-rwxr-xr-x ,亦即 -perm /755 時,但一個文件屬性為 -rw——-也會被列出來,因為他有 -rw…. 的屬性存在!
9、單引號和雙引號的區別
'單引號表示強引用,引用的變量不會被替換
“雙引號表示弱引用,引用的變量會被替換
10、工作原理:
一旦輸入該命令,find就會遵循一個3個步驟的處理過程。
(1)路徑:find所做的第一件事就是查看每一個路徑,檢查這些路徑所表示的整個目錄樹,包括所有的子目錄??梢詾閒ind命令指定多個路徑,空格分隔。
(2)測試:對于遇到的每一個文件,find應用指定的測試條件,這里的目標就是創建一個滿足指定標準的所有文件的列表
(3)對每一個通過測試的文件,執行動作。
11、以下是find部分選項(包括測試選項)的含義:
選項 | 選項含義 |
-name <文件名> | 按照文件名來查找文件 |
-perm <權限> | 按照文件的的權限來查找文件 |
-user <用戶名> | 按照文件的屬主來查找文件 |
-group <組名> | 按照文件的所屬組來查找文件 |
-atime +(-)n | 匹配在過去n天內被訪問過(atime)的文件 n為數字 |
-amin +(-)n | 匹配在過去n分鐘內被訪問過的文件 n為數字 |
-ctime +(-)n | 匹配在過去n天內被更改過的文件 n為數字 |
-cmin +(-)n | 匹配在過去n分鐘內被更改過的文件 n為數字 |
-mtime +(-)n | 匹配在過去n天內被修改過的文件 n為數字 |
-mmin +(-)n | 匹配在過去n分鐘內被修改過的文件 n為數字 |
-size n [ckMG] | 查找大小為n的文件,n代表數字,c代表字節、k代表KB,M代表MB,G代表GB |
-empty | 查找空文件 可以是普通的文件或目錄 |
-type <文件類型> 注:文件類型見下表 | 按照文件類型來查找目錄 |
-fstype <文件系統類型> | 按照指定的文件系統來查找目錄 |
-nogroup | 查找沒有群組的文件 |
-nouser | 查找沒有用戶的文件 |
-uid <用戶UID> | 按照文件屬主的UID來查找文件 |
-gid <用戶GID> | 按照文件所屬組的GID來查找文件 |
-inum n | 按照文件的inode號碼來查找文件 n代表數字 |
-readable | 匹配可讀的文件 |
-samefile <文件名> | 查找和指定文件相同inode的文件 |
-writable | 匹配可寫文件 |
-links n | 按照文件鏈接數來查找文件 n代表數字 |
-anewer | 查找最近修改后又被訪問的文件。受命令行后的-H和-L影響 |
-cnewer | 查找最近編輯后又被更改的文件。受命令行后的-H和-L影響 |
-daystart | 計算從今天開始的次數,而不是24之前。只影響命令行中在它后面的測試 |
-depth | 順著目錄樹向下查找,跳過目錄,對遇到的第一個實際文件進行處理然后沿目錄向上 |
-iname <pattern> | -name選項的不區分大小寫的版本。 |
-lname | 查找指向符號鏈接文件,pattern可以包含通配符,且不把“/”和“.”當特殊字符,不區分大小寫 |
下表是部分動作選項的含義:
選項 | 含義 |
-delete | 刪除文件 |
將路徑名寫入到標準輸出 | |
-fprint file | 同-print但是將輸出寫入到file中 |
-ls | 顯示長目錄列表 |
-fls file | 同-ls 但是將輸出寫入到file中 |
-exec command {} \ | 執行command,{}指示匹配的文件名 |
-ok command {} \ | 同-exec,但是在運行command之前進行確認 |
12、實例:
(1)、查找/var目錄下屬主為root,且屬組為mail的所有文件或目錄
[root@desperadochn ~]# find /var -user root -group mail /var/spool/mail
(2)、查找/usr目錄下不屬于root、bin或hadoop的所有文件或目錄
[root@desperadochn ~]# adduser hadoop
[root@desperadochn ~]# find /usr -not -user root -a -not -user bin -a -not -user hadoop
/usr/share/polkit-1/rules.d
[root@desperadochn ~]# find /usr -not \( -user root -o -user bin -o -user hadoop \) #法二/usr/share/polkit-1/rules.d
(3)、查找/etc目錄下最周一周內其內容修改過,同時屬主不為root,也不是hadoop的文件或目錄
[root@desperadochn ~]# find /etc -mtime -7 -a -not -user root -a -not -user hadoop /etc/tcsd.conf [root@desperadochn ~]# find /etc/ -mtime -7 -a -not \( -user root -o -user hadoop \) #法2 /etc/tcsd.conf
(4)、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件或目錄
[root@desperadochn ~]# find / -nouser -a -nogroup -a -atime -7 find: ‘/proc/2549/task/2549/fd/6’: 沒有那個文件或目錄 find: ‘/proc/2549/task/2549/fdinfo/6’: 沒有那個文件或目錄 find: ‘/proc/2549/fd/6’: 沒有那個文件或目錄 find: ‘/proc/2549/fdinfo/6’: 沒有那個文件或目錄 /root/cmatrix-1.2a
(5)、查找/etc目錄下大于1M且類型為普通文件的所有文件
[root@desperadochn ~]# find /etc -size +1M -type f /etc/udev/hwdb.bin /etc/selinux/targeted/policy/policy.29 /etc/etc.tar.gz
(6)、查找/etc目錄下所有用戶都沒有寫權限的文件
[root@desperadochn ~]# find /etc -not -perm /222 /etc/pki/ca-trust/extracted/java/cacerts /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem /etc/lvm/profile/cache-mq.profile/etc/lvm/profile/cache-smq.profile /etc/lvm/profile/command_profile_template.profile /etc/lvm/profile/metadata_profile_template.profile /etc/lvm/profile/thin-generic.profile /etc/lvm/profile/thin-performance.profile /etc/udev/hwdb.bin /etc/machine-id /etc/gshadow /etc/shadow /etc/ld.so.conf.d/kernel-3.10.0-327.el7.x86_64.conf /etc/gshadow- /etc/openldap/certs/password /etc/shadow- /etc/sudoers
(7)、查找/etc目錄下至少有一類用戶沒有執行權限的文件
[root@desperadochn ~]# find /etc -not -perm -111 |head -n10 #因輸出結果過多只顯示前10個結果 /etc/fstab /etc/crypttab /etc/resolv.conf /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Testing-7 /etc/pki/tls/certs/Makefile/etc/pki/tls/openssl.cnf /etc/pki/ca-trust/README /etc/pki/ca-trust/ca-legacy.conf
(8)、查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶有寫權限的文件
[root@desperadochn ~]# find /etc/init.d -perm -113 /etc/init.d
(9)、將過去系統上面 24 小時內有更動過內容 (mtime) 的文件列出
[root@desperadochn ~]# find / -mtime 0 |head -n10 #因輸出結果過多 只顯示前10個 #0 代表目前的時間,是從現在開始到24小時前 #如果是3天前的24小時內的文件變動呢? #find / -mtime 3 /dev /dev/vcsa6 /dev/vcs6 /dev/vcsa5 /dev/vcs5 /dev/vcsa4 /dev/vcs4 /dev/vcsa3 /dev/vcs3 /dev/vcsa2
(10)、在/tmp下生成一個file文件,并找出在tmp目錄下比file還要新的文件名
[root@desperadochn tmp]# cd /tmp/ [root@desperadochn tmp]# touch file [root@desperadochn tmp]# touch file1 [root@desperadochn tmp]# find /tmp/ -newer file /tmp//tmp/file1
(11)、找出文件名為passwd的文件
[root@desperadochn tmp]# find / -name passwd /sys/fs/selinux/class/passwd /sys/fs/selinux/class/passwd /perms/passwd /etc/passwd /etc/pam.d/passwd /usr/bin/passwd
(12)、找出 /run 目錄下,文件類型為 Socket 的文件
[root@desperadochn tmp]# find /run -type s /run/NetworkManager/private-dhcp /run/NetworkManager/private/run/dbus/system_bus_socket /run/lvm/lvmetad.socket/run/lvm/lvmpolld.socket /run/udev/control/run/systemd/shutdownd /run/systemd/private /run/systemd/journal/socket /run/systemd/journal/stdout /run/systemd/notify
(13)、找出來 /usr/bin, /usr/sbin 這兩個目錄下,具有 SUID 或 SGID 的文件并對找到的文件使用 ls -l 列出來
[root@desperadochn tmp]# find /usr/bin /usr/sbin -perm /7000 -exec ls -l {} \; -r-xr-sr-x. 1 root tty 15344 6月 10 2014 /usr/bin/wall -rws--x--x. 1 root root 23960 11月 20 20:37 /usr/bin/chfn -rws--x--x. 1 root root 23856 11月 20 20:37 /usr/bin/chsh -rwsr-xr-x. 1 root root 64200 3月 6 2015 /usr/bin/chage -rwsr-xr-x. 1 root root 78168 3月 6 2015 /usr/bin/gpasswd -rwsr-xr-x. 1 root root 41752 3月 6 2015 /usr/bin/newgrp -rwsr-xr-x. 1 root root 44232 11月 20 20:37 /usr/bin/mount -rwsr-xr-x. 1 root root 32072 11月 20 20:37 /usr/bin/su -rwsr-xr-x. 1 root root 31960 11月 20 20:37 /usr/bin/umount -rwsr-xr-x. 1 root root 27656 6月 10 2014 /usr/bin/pkexec -rwsr-xr-x. 1 root root 57544 7月 27 2015 /usr/bin/crontab -rwxr-sr-x. 1 root tty 19536 11月 20 20:37 /usr/bin/write ---x--s--x. 1 root nobody 306304 11月 20 20:01 /usr/bin/ssh-agent -rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd ---s--x--x. 1 root root 130720 11月 21 04:16 /usr/bin/sudo -rwsr-xr-x. 1 root root 11208 8月 18 2015 /usr/sbin/pam_timestamp_check -rwsr-xr-x. 1 root root 36264 8月 18 2015 /usr/sbin/unix_chkpwd -rwxr-sr-x. 1 root root 11208 11月 20 14:21 /usr/sbin/netreport -rwsr-xr-x. 1 root root 11272 11月 20 14:21 /usr/sbin/usernetctl -rwxr-sr-x. 1 root postdrop 218552 6月 10 2014 /usr/sbin/postdrop -rwxr-sr-x. 1 root postdrop 259992 6月 10 2014 /usr/sbin/postqueue
(14)、找出系統中大于1MB的文件
[root@desperadochn tmp]# find / -size +1M |head -n10 #可以預見結果龐大,只列出前10條結果 find: ‘/proc/2847/task/2847/fd/6’: 沒有那個文件或目錄 find: ‘/proc/2847/task/2847/fdinfo/6’: 沒有那個文件或目錄find: ‘/proc/2847/fd/6’: 沒有那個文件或目錄 find: ‘/proc/2847/fdinfo/6’: 沒有那個文件或目錄 /boot/grub2/fonts/unicode.pf2 /boot/System.map-3.10.0-327.el7.x86_64 /boot/vmlinuz-3.10.0-327.el7.x86_64 /boot/initramfs-0-rescue-26689a6cb0d3436a8653b8fd2530a897.img /boot/vmlinuz-0-rescue-26689a6cb0d3436a8653b8fd2530a897 /boot/initramfs-3.10.0-327.el7.x86_64.img /boot/initramfs-3.10.0-327.el7.x86_64kdump.img /proc/kcore/run/log/journal/26689a6cb0d3436a8653b8fd2530a897 /system.journal/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
(15)、刪除一個目錄下的所有文件,但保留一個指定文件,假設這個目錄是/tmp/test11,文件是a,b,c..f;要求只保留f
[root@desperadochn tmp]# mkdir -p /tmp/test11/ [root@desperadochn tmp]# cd /tmp/test11/ [root@desperadochn test11]# touch {a..f} [root@desperadochn test11]# lsa b c d e f#以上搭建測試環境 [root@desperadochn test11]# find /tmp/test11/ -type f ! -name "f" |xargs rm -f [root@desperadochn test11]# ls f
(16)、查找“/”目錄下所有以“.conf”為擴展名的文件
[root@desperadochn ~]# find / -name '*.conf' |head -n10 #數據太多只取10個 /run/tmpfiles.d/kmod.conf /run/systemd/system/session-2.scope.d/50-SendSIGHUP.conf /run/systemd/system/session-2.scope.d/50-After-systemd-user-sessions\x2eservice.conf /run/systemd/system/session-2.scope.d/50-After-systemd-logind\x2eservice.conf /run/systemd/system/session-2.scope.d/50-Description.conf /run/systemd/system/session-2.scope.d/50-Slice.conf /run/systemd/system/session-1.scope.d/50-SendSIGHUP.conf /run/systemd/system/session-1.scope.d/50-After-systemd-user-sessions\x2eservice.conf /run/systemd/system/session-1.scope.d/50-After-systemd-logind\x2eservice.conf /run/systemd/system/session-1.scope.d/50-Description.conf
(17)、查找/root目錄中為空的文件或者子目錄
[root@desperadochn ~]# find /root -empty /root/a,b,c,d,e,f /root/.pki/nssdb /root/2.txt
(18)、查找inode號碼是6029314的文件
[root@desperadochn ~]# cd /tmp/f [root@desperadochn f]# lsa b c [root@desperadochn f]# stat a 文件:"a" 大小:33 塊:8 IO 塊:4096 普通文件 設備:fd00h/64768d Inode:535915 硬鏈接:1 權限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 環境:unconfined_u:object_r:user_tmp_t:s0 最近訪問:2016-03-22 14:17:04.649986156 +0800 最近更改:2016-03-22 14:18:57.364984128 +0800 最近改動:2016-03-22 14:18:57.367984127 +0800 創建時間:-#該文件的inode號是535915 [root@desperadochn f]# find / -inum 535915 /tmp/f/a
(19)、查找 /home目錄下用戶所有者UID為1000的文件
[root@desperadochn f]# find /home/ -uid 1000 /home/desperadochn /home/desperadochn/.bash_logout /home/desperadochn/.bash_profile /home/desperadochn/.bashrc
參考文獻:
《鳥哥的私房菜》作者 鳥哥
《linux應用大全基礎管理篇》作者 於岳
《linux技術手冊》作者 Ellen siever等
《Harley Hahn's Guide to Unix and Linux》 作者:Harley Hahn
原創文章,作者:Net17_desperado,如若轉載,請注明出處:http://www.www58058.com/13216