linux find命令是linux系統(tǒng)管理員工具庫中最強大的工具之一,它允許我們根據(jù)用戶給定的表達式搜索目錄層次結構中的文件和目錄,對每個匹配的文件應用用戶指定的操作。下面本篇文章就來帶大家了解一下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教程》