首頁  >  文章  >  運維  >  Linux中如何使用Find指令來尋找文件

Linux中如何使用Find指令來尋找文件

青灯夜游
青灯夜游原創
2019-03-15 16:25:354959瀏覽

Linux Find命令是Linux系統管理員工具庫中最強大的工具之一,它允許我們根據用戶給定的表達式搜尋目錄層次結構中的檔案和目錄,對每個匹配的檔案應用用戶指定的操作。以下這篇文章就來帶大家了解Find指令的方法,希望對大家有幫助。

Linux中如何使用Find指令來尋找文件

Linux  Find指令

#使用find指令根據檔案權限,類型,日期,所有權,大小等搜尋文件。它也可以與其他工具結合使用,例如grep或sed對這些檔案執行操作

在討論如何使用find指令之前,我們先來了解一下基本語法:

find [options] [path...] [expression]

說明:

 ● options屬性:控制符號鏈接,除錯選項和最佳化方法的處理。

 ● path...屬性:定義了find將搜尋檔案的起始目錄。

 ● expression屬性:由“options”,“搜尋模式”和“由運算符分隔的操作”組成。

我們來看看下面的例子:

find  -L /home/projects/ -name "*.js" -exec chmod 644 {} \;

說明:此命令包含一個參數-L(options),它允許find命令跟隨符號鏈接,搜尋/home/projects/(path ...)下面的整個目錄樹,尋找以.js(expression)結尾的所有文件,並將所有匹配文件的權限設置為644。

如何按類型尋找檔案?

要指定要尋找的檔案類型,需要使用-type參數。

可以使用下列描述子指定檔案類型:

 ● f:常規檔案

 ● d:目錄

 ● l:符號連結

# ● c:角色設備

 ● b:區塊裝置

 ● p:命名管道(FIFO)

 ● s:套接字

範例:

如果要尋找目前工作目錄中的所有目錄,可以使用:

find . -type d

如果要列出系統類型上的所有字元裝置:

find / -type c

如何按名稱尋找檔案?

以名稱尋找檔案可能是find指令最常用的用法。要按名稱查找文件,需要將該-name選項與要搜尋的文件的名稱一起傳遞。

範例:

要在/home/linuxize目錄中搜尋名為document.pdf的文件,可以使用以下命令:

sudo find /home/linuxize -type f -name document.pdf

如果要運行不區分大小寫的搜索,可以-name使用-iname以下命令更改選項:

sudo find /home/linuxize -type f -iname document.pdf

說明:上面的命令將匹配Document.pdf,DOCUMENT.pdf ..等。

如何按副檔名尋找檔案?

以副檔名搜尋檔案與以名稱搜尋檔案相同。

例如:

如果要查找以.log.gzinside /var/log/nginx目錄結尾的所有文件,可以使用:

find /var/log/nginx -type f -name '*.log.gz'

如果要尋找與正規表示式不符的所有文件,*.log.gz可以使用該-not參數。例如,要查找不以*.log.gz您結尾的所有文件,請使用:

find /var/log/nginx -type f -not -name '*.log.gz'

#如何按大小查找文件?

# #要根據文件大小查找文件,需要將-size參數與大小條件一起傳遞。可使用以下後綴指定檔案大小:

 ● b:512位元組區塊(預設)

 ● c:位元組

 ● w:雙位元組字

 ● k:Kilobytes

 ● M:兆位元組

 ● G:千兆位元組

例如:

要在/ tmp目錄中查找完全1024位元組的所有文件,可以執行以下命令:

find /tmp -type f -size 1024c

find命令還允許我們搜尋大於或小於指定大小的文件。例如:

我們可以在目前工作目錄中搜尋小於1MB的所有文件,這需要在大小值之前加上減號:

find . -type f -size -1M

如果要搜尋大小超過1MB的文件,則需要使用加號:

find . -type f -size +1M

甚至可以搜尋大小範圍內的檔案。例如,以下指令將會尋找介於1和2 MB之間的所有檔案:

find . -type f -size +1M -size 21M

如何依照修改日期來尋找檔案?

find指令也可以根據上次修改,存取或更改時間來搜尋檔案。

與按大小搜尋時相同,可以使用加號和減號來指定大於或小於。

例如:

幾天前你修改了一個dovecot設定文件,但你忘了檔名。我們可以很容易地篩選以.conf結尾的/etc/dovecot/conf.d/目錄中的所有文件,這些文件在過去5天內被修改為:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

我們還可以列出30天或更久前修改的/home目錄中的所有檔案:

find /home -mtime +30 -daystart

如何按權限尋找檔案?

要根據文件權限過濾文件,需要使用該-perm選項。

例如:#

要在/var/www/html目录中查找权限为775的所有文件:

find /var/www/html -perm 644

还可以使用减号-或斜杠/为数字模式添加前缀。

当斜杠/用作前缀时,至少一个类别(用户,组或其他类别)必须至少为文件匹配设置相应的位。

find . -perm /444

说明:搜索对用户,组或其他人设置了读权限的所有文件。

如果使用减号-作为前缀,则必须至少设置要匹配的文件。

find . -perm -664

说明:搜索对所有者和组具有读写权限的文件,并且其他用户可以读取。

如何按所有者查找文件?

要查找特定用户或组拥有的文件,可以使用-user和-group选项。

例如,要搜索用户拥有的所有文件和目录linuxize,可以运行:

find / -user linuxize

这是更高级的示例,假设是希望查找用户www-data拥有的所有文件,并将匹配文件的所有权从www-data更改为nginx:

find / -user www-data -type f  -exec chown nginx {} \;

相关视频教程推荐:《linux教程

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

以上是Linux中如何使用Find指令來尋找文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn