Linux中如何使用Find命令查找文件

linux find命令是linux系統(tǒng)管理員工具庫中最強大的工具之一,它允許我們根據(jù)用戶給定的表達式搜索目錄層次結構中的文件和目錄,對每個匹配的文件應用用戶指定的操作。下面本篇文章就來帶大家了解一下find命令的方法,希望對大家有所幫助。

Linux中如何使用Find命令查找文件

Linux? Find命令

使用find命令根據(jù)文件權限,類型,日期,所有權,大小等搜索文件。它還可以與其他工具結合使用,例如grep或sed對這些文件執(zhí)行操作

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

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

說明:

?● options屬性:控制符號鏈接,調(diào)試選項和優(yōu)化方法的處理。

?● path…屬性:定義了find將搜索文件的起始目錄。

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

我們來看看下面的例子:

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

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

如何按類型查找文件?

要指定要查找的文件類型,需要使用-type參數(shù)。

可以使用以下描述符指定文件類型:

?● f:常規(guī)文件

?● d: 目錄

?● l:符號鏈接

?● c:角色設備

?● b:塊設備

?● p:命名管道(FIFO)

?● s:套接字

示例:

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

find?.?-type?d

如果要列出系統(tǒng)類型上的所有字符設備:

find?/?-type?c

如何按名稱查找文件?

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

示例:

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

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

如果要運行不區(qū)分大小寫的搜索,可以-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參數(shù)。例如,要查找不以*.log.gz您結尾的所有文件,請使用:

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

如何按大小查找文件?

要根據(jù)文件大小查找文件,需要將-size參數(shù)與大小條件一起傳遞。可以使用以下后綴指定文件大小:

?● b:512字節(jié)塊(默認)

?● c:字節(jié)

?● w:雙字節(jié)字

?● k:Kilobytes

?● M:兆字節(jié)

?● G:千兆字節(jié)

例如:

要在/tmp目錄中查找完全1024字節(jié)的所有文件,可以運行以下命令:

find?/tmp?-type?f?-size?1024c

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

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

find?.?-type?f?-size?-1M

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

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

甚至可以搜索大小范圍內(nèi)的文件。例如,以下命令將查找介于1和2 MB之間的所有文件:

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

如何按修改日期查找文件?

find命令還可以根據(jù)上次修改,訪問或更改時間來搜索文件。

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

例如:

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

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

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

find?/home?-mtime?+30?-daystart

如何按權限查找文件?

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

例如:

要在/var/www/html目錄中查找權限為775的所有文件:

find?/var/www/html?-perm?644

還可以使用減號-或斜杠/為數(shù)字模式添加前綴。

當斜杠/用作前綴時,至少一個類別(用戶,組或其他類別)必須至少為文件匹配設置相應的位。

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教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享