欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux中find命令的用法匯總

 更新時(shí)間:2017年03月12日 15:19:20   作者:Wray  
Linux下find命令在目錄結(jié)構(gòu)中搜索文件,并執(zhí)行指定的操作。Linux下find命令提供了相當(dāng)多的查找條件,功能很強(qiáng)大。由于find具有強(qiáng)大的功能,所以它的選項(xiàng)也很多,其中大部分選項(xiàng)都值得我們花時(shí)間來了解一下。下面我們就來簡(jiǎn)單匯總下其用法

Linux系統(tǒng)中的 find 命令在查找文件時(shí)非常有用而且方便。它可以根據(jù)不同的條件來查找文件,例如權(quán)限、擁有者、修改日期/時(shí)間、文件大小等等。在這篇文章中,我們將學(xué)習(xí)如何使用 find 命令以及它所提供的選項(xiàng)來查找文件。

在絕大多數(shù)Linux發(fā)行版中,你都可以直接使用 find 命令而無需進(jìn)行任何安裝操作。如果你想在linux系統(tǒng)的命令行中變得特別高效,那么 find 是你必須掌握的命令之一。

find 命令的基本語(yǔ)法如下:

$ find [path] [option] [expression]

一、基本用法

1. 列出當(dāng)前目錄和子目錄下的所有文件

這個(gè)命令會(huì)列出當(dāng)前目錄以及子目錄下的所有文件。

$ find
.
./abc.txt
./subdir
./subdir/how.php
./cool.php

該命令與以下命令效果相同

$ find .
$ find . -print

2. 查找特殊的目錄或路徑

下面的命令會(huì)查找當(dāng)前目錄下 test 文件夾中的文件,默認(rèn)列出所有文件。

$ find ./test
./test
./test/abc.txt
./test/subdir
./test/subdir/how.php
./test/cool.php

下面的命令用于查找指定名稱的文件。

$ find ./test -name "abc.txt"
./test/abc.txt

也可以使用通配符

$ find ./test -name "*.php"
./test/subdir/how.php
./test/cool.php

請(qǐng)注意,所有的文件夾都會(huì)被遞歸地查找。所以,這是用于查找指定擴(kuò)展名文件的一種非常強(qiáng)大的方式。

如果我們嘗試搜索 / 文件夾,也就是根目錄,就會(huì)搜索整個(gè)文件系統(tǒng),包括掛載的設(shè)備以及網(wǎng)絡(luò)存儲(chǔ)設(shè)備。所以請(qǐng)小心使用。當(dāng)然,你隨時(shí)可以通過按 Ctrl + C 來終止命令。

注意:當(dāng)指定文件夾的時(shí)候(例如示例中的"./test"文件夾),忽略末尾的斜杠是沒有問題的。但是,如果文件夾是一個(gè)指向其它位置的鏈接(symlink)時(shí),你必須在末尾寫上斜杠才能使find命令正常工作(find ./test/)。

忽略大小寫

在查找文件名時(shí),忽略大小寫往往非常有用。要忽略大小寫,只需要使用 iname 選項(xiàng),而不是 name 選項(xiàng)。

$ find ./test -iname "*.Php"
./test/subdir/how.php
./test/cool.php

總是用雙引號(hào)或單引號(hào)來包圍匹配模式(文件名參數(shù)),這非常有用。不這樣做的話有時(shí)也能正常工作,有時(shí)也可能會(huì)產(chǎn)生奇怪的結(jié)果。

3. 限制目錄查找的深度

find 命令默認(rèn)會(huì)遞歸查找整個(gè)目錄樹,而這非常消耗時(shí)間和資源。好在目錄查找的深度可以手動(dòng)指定。例如我們只想查找一到兩層以內(nèi)的子目錄,可以通過 maxdepth 選項(xiàng)來指定。

$ find ./test -maxdepth 2 -name "*.php"
./test/subdir/how.php
./test/cool.php

$ find ./test -maxdepth 1 -name *.php
./test/cool.php

第二個(gè)示例中指定了 maxdepth 為1,表明最多只查找一層內(nèi)的子目錄,也就是只查找當(dāng)前文件夾。

當(dāng)我們只想在當(dāng)前目錄下查找,而不是查找整個(gè)目錄樹的時(shí)候,這個(gè)選項(xiàng)會(huì)特別有用。

與 maxdepth 選項(xiàng)相似,還有一個(gè)選項(xiàng)叫做 mindepth ,正如名字所表示的那樣,它會(huì)至少到達(dá)第 N 層子目錄后才開始查找文件。

4. 反向查找

除了查找滿足條件的文件之外,我們還可以查找不滿足條件的所有文件。當(dāng)我們知道要在查找中排除哪些文件時(shí),這個(gè)選項(xiàng)就能發(fā)揮作用了。

$ find ./test -not -name "*.php"
./test
./test/abc.txt
./test/subdir

在上面的示例中我們找到了所有擴(kuò)展名不是 php 的文件和文件夾。我們也可以使用感嘆號(hào) ! 來代替 -not。

find ./test ! -name "*.php" 

5. 結(jié)合多個(gè)查找條件

我們可以同時(shí)使用多個(gè)查找條件來指定文件名并排除某些文件。

$ find ./test -name 'abc*' ! -name '*.php'
./test/abc.txt
./test/abc

上面的命令查找所有以 abc 開頭并且不含 .php 擴(kuò)展名的文件。這個(gè)示例展現(xiàn)了 find 命令自帶的查找表達(dá)式是多么的強(qiáng)大。

OR 操作符

當(dāng)我們使用多個(gè)查找條件時(shí), find 命令會(huì)將它們通過 AND 操作符結(jié)合起來,也就是說,只有滿足所有條件的文件才會(huì)被列出。不過,如果我們需要進(jìn)行基于 OR 運(yùn)算的查找時(shí),可以加上 -o 開關(guān)。

$ find -name '*.php' -o -name '*.txt'
./abc.txt
./subdir/how.php
./abc.php
./cool.php

上面的命令查找所有以 .php 結(jié)尾或者以 .txt 結(jié)尾的文件。

6. 只查找文件或目錄

有時(shí)我們只想通過某個(gè)名字查找對(duì)應(yīng)的文件或?qū)?yīng)的目錄,我們可以很容易實(shí)現(xiàn)這個(gè)要求。

$ find ./test -name abc*
./test/abc.txt
./test/abc

只查找文件

$ find ./test -type f -name "abc*"
./test/abc.txt

只查找目錄

$ find ./test -type d -name "abc*"
./test/abc

非常有用而且方便!

7. 同時(shí)在多個(gè)目錄下查找

如果你想要在兩個(gè)不同的目錄內(nèi)進(jìn)行查找,命令非常簡(jiǎn)單。

$ find ./test ./dir2 -type f -name "abc*"
./test/abc.txt
./dir2/abcdefg.txt

檢查一下,它確實(shí)列出了來自給定的兩個(gè)目錄的文件。

8. 查找隱藏文件

在Linux系統(tǒng)中,隱藏文件的名字以英文的句號(hào)開頭,即 . 。所以要列出隱藏文件,只需加上簡(jiǎn)單的文件名過濾條件就行了。

$ find ~ -type f -name ".*"

二、基于文件權(quán)限和屬性的查找

9. 查找指定權(quán)限的文件

通過指定 perm 選項(xiàng),我們可以查找具有特定權(quán)限的文件。下面的示例中查找了所有具有 0664 權(quán)限的文件。

$ find . -type f -perm 0664
./abc.txt
./subdir/how.php
./abc.php
./cool.php

我們可以用這個(gè)命令來查找?guī)в绣e(cuò)誤權(quán)限的文件,這些文件可能會(huì)產(chǎn)生安全問題。

可以結(jié)合 反向查找 來進(jìn)行權(quán)限檢查。

$ find . -type f ! -perm 0777
./abc.txt
./subdir/how.php
./abc.php
./cool.php

10. 查找具有 SGID/SUID 屬性的文件

下面的命令查找所有具有 644 權(quán)限和 SGID 屬性的文件。

# find / -perm 2644

我們同樣可以使用 1664 來查找設(shè)置了 粘滯位 (sticky bit)的文件。

# find / -perm 1644

perm 選項(xiàng)除了接受數(shù)值型參數(shù)外,同樣接受 chmod 命令中的模式串。在下面的查找中,我們用另一種語(yǔ)法來代替數(shù)字。

$ find / -maxdepth 2 -perm /u=s 2>/dev/null
/bin/mount
/bin/su
/bin/ping6
/bin/fusermount
/bin/ping
/bin/umount
/sbin/mount.ecryptfs_private

注意:由于權(quán)限不足,某些目錄會(huì)拒接訪問。命令中的 2>/dev/null 正是用于清除輸出中的錯(cuò)誤訪問結(jié)果。

11. 查找只讀文件

$ find /etc -maxdepth 1 -perm /u=r
/etc
/etc/thunderbird
/etc/brltty
/etc/dkms
/etc/phpmyadmin
... output truncated ...

12. 查找可執(zhí)行文件

$ find /bin -maxdepth 2 -perm /a=x
/bin
/bin/preseed_command
/bin/mount
/bin/zfgrep
/bin/tempfile
... output truncated ...

三、基于文件擁有者和用戶組的查找

13. 查找屬于特定用戶的文件

查找當(dāng)前目錄下,屬于 bob 的文件。

$ find . -user bob
.
./abc.txt
./abc
./subdir
./subdir/how.php
./abc.php

在指定所屬用戶的同時(shí),我們同樣可以指定文件名。

$ find . -user bob -name '*.php'

很容易看出,我們可以通過增加過濾條件來縮小查找文件的范圍。

14. 查找屬于特定用戶組的文件

# find /var/www -group developer

四、基于日期和時(shí)間的查找

除了上面介紹的查找條件外,另外一個(gè)非常棒的查找條件就是文件的修改和訪問時(shí)間(日期)。當(dāng)我們想要找出哪些文件在某段時(shí)間內(nèi)被修改的時(shí)候,這個(gè)查找條件將會(huì)非常方便。我們來看幾個(gè)例子。

15. 查找過去的第 N 天被修改過的文件

# find / -mtime 50

16. 查找過去的 N 天內(nèi)被訪問過的文件

# find / -atime -50

17. 查找某段時(shí)間范圍內(nèi)被修改過內(nèi)容的文件

# find / -mtime +50 -mtime -100

18. 查找過去的 N 分鐘內(nèi)狀態(tài)發(fā)生改變的文件

$ find /home/bob -cmin -60

19. 查找過去的 1 小時(shí)內(nèi)被修改過內(nèi)容的文件

# find / -mmin -60

20. 查找過去的 1 小時(shí)內(nèi)被訪問過的文件

# find / -amin -60

五、基于文件大小的查找

21. 查找指定大小的文件

$ find / -size 50M

22. 查找大小在一定范圍內(nèi)的文件

$ find / -size +50M -size -100M

23. 查找最大和最小的文件

我們可以將 find 命令與 ls 和 sort命令結(jié)合,從而找出最大或最小的文件。

下面的命令使用了 sort 命令的 -r 選項(xiàng),也就是從大到小降序排列。經(jīng)過 head 命令的過濾之后,會(huì)顯示當(dāng)前目錄和子目錄下最大的5個(gè)文件。命令的執(zhí)行過程需要一段時(shí)間,查找的速度取決于文件的總數(shù)。

$ find . -type f -exec ls -s {} \; | sort -n -r | head 5

同樣,我們可以去掉 sort 命令的 -r 選項(xiàng)來進(jìn)行升序排列,從而顯示出最小的5個(gè)文件。

$ find . -type f -exec ls -s {} \; | sort -n | head 5

24. 查找空文件和空目錄

查找空文件:

# find /tmp -type f -empty

查找空目錄:

$ find ~/ -type d -empty

非常簡(jiǎn)單!

六、高級(jí)操作

find 命令不僅可以通過特定條件來查找文件,還可以對(duì)查找到的文件使用任意linux命令進(jìn)行操作。下面給出兩個(gè)例子。

25. 使用 ls 命令列出文件信息

我們使用 find 命令找到文件后,只能看到文件路徑。如果想進(jìn)一步查看文件信息,可以結(jié)合 ls 命令來實(shí)現(xiàn)。

$ find . -exec ls -ld {} \;
drwxrwxr-x 4 enlightened enlightened 4096 Aug 11 19:01 . 
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./abc.txt
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:48 ./abc 
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:26 ./subdir 
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:26 ./subdir/how.php
-rw-rw-r-- 1 enlightened enlightened 29 Aug 11 19:13 ./abc.php
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./cool.php

26. 刪除找到的文件

下面的命令會(huì)刪除 tmp 目錄下擴(kuò)展名為 .txt 的文件。

$ find /tmp -type f -name "*.txt" -exec rm -f {} \;

我們同樣可以刪除目錄,只要把 -type 后面的 f 改為 d ,并且在 rm 命令后面加上 -r 即可。

$ find /tmp -type d -name "dirToRemove" -exec rm -r -f {} \;

本文由 Wray 翻譯,略有刪改??紤]到原文有個(gè)別錯(cuò)誤,以及為便于讀者理解,故采用意譯的方式。不足之處請(qǐng)大家指出,謝謝。

相關(guān)文章

  • Linux有限狀態(tài)機(jī)FSM的理解與實(shí)現(xiàn)

    Linux有限狀態(tài)機(jī)FSM的理解與實(shí)現(xiàn)

    這篇文章主要幫助大家理解與實(shí)現(xiàn)Linux有限狀態(tài)機(jī)FSM,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • CentOS下寶塔部署Django項(xiàng)目的詳細(xì)教程

    CentOS下寶塔部署Django項(xiàng)目的詳細(xì)教程

    這篇文章主要介紹了CentOS下寶塔部署Django項(xiàng)目的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 詳解Linux添加/刪除用戶和用戶組

    詳解Linux添加/刪除用戶和用戶組

    本文總結(jié)了Linux添加或者刪除用戶和用戶組時(shí)常用的一些命令和參數(shù)。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • CentOS下安裝Memcached和PHP Memcached擴(kuò)展

    CentOS下安裝Memcached和PHP Memcached擴(kuò)展

    今天小編就為大家分享一篇關(guān)于CentOS下安裝Memcached和PHP Memcached擴(kuò)展,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Linux提權(quán)技巧全面匯總

    Linux提權(quán)技巧全面匯總

    在Linux系統(tǒng)中,提權(quán)是指獲取更高的權(quán)限,這通常通過使用特定的命令或工具來完成,在這篇文章中,我們將探討一些常見的Linux提升權(quán)限的技巧:常用提權(quán)命令,反彈shell,獲取完整交互式SHELL,Linux內(nèi)核漏洞提權(quán),臟牛提權(quán),metasploit linux提權(quán),SUID提權(quán),passwd提權(quán),ssh密鑰提權(quán)
    2024-05-05
  • Linux中有效地管理進(jìn)程的8個(gè)命令

    Linux中有效地管理進(jìn)程的8個(gè)命令

    這篇文章主要給大家介紹了關(guān)于Linux中有效地管理進(jìn)程的8個(gè)命令,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Linux中查找工具的友好替代方案

    Linux中查找工具的友好替代方案

    今天小編就為大家分享一篇關(guān)于Linux中查找工具的友好替代方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-09-09
  • Linux CentOS7 用戶組管理方式

    Linux CentOS7 用戶組管理方式

    這篇文章主要介紹了Linux CentOS7 用戶組管理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Linux中的安全配置技巧分享

    Linux中的安全配置技巧分享

    這篇文章主要介紹了Linux中的安全配置技巧,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 詳解CentOS下Nginx如何禁止IP訪問

    詳解CentOS下Nginx如何禁止IP訪問

    服務(wù)器的安全相信是每位運(yùn)維人員最關(guān)心的問題,不知道大家在使用的時(shí)候會(huì)不會(huì)遇到很多的惡意IP攻擊,最近公司的服務(wù)器就遇到了這個(gè)問題,這個(gè)時(shí)候就要用到Nginx 禁止IP訪問了。本文介紹了詳細(xì)的步驟,有同樣問題的朋友們可以參考學(xué)習(xí)。
    2016-10-10

最新評(píng)論