国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

find命令的常用實(shí)例

2023-12-21 15:35:36 480

find命令的常用實(shí)例

查找目錄

您可以使用-type d選項告訴find命令專(zhuān)門(mén)查找目錄。這將使find命令僅搜索匹配的目錄名,而不搜索文件名。

$ find /path/to/search -type d -name "name-of-dir"

image.png

查找隱藏文件

由于Linux中的隱藏文件和目錄以句點(diǎn)開(kāi)頭,因此我們可以在搜索字符串中指定此搜索模式,以便遞歸列出隱藏的文件和目錄。

$ find /path/to/search -name ".*"

查找特定大小或大于X的文件

find的-size選項允許我們搜索特定大小的文件。它可用于查找確切大小的文件,大于或小于特定大小的文件或適合指定大小范圍的文件。以下有些例子:

搜索大于10MB的文件:

$ find /path/to/search -size +10M

搜索小于10MB的文件:

$ find /path/to/search -size -10M

搜索大小恰好為10MB的文件:

$ find /path/to/search -size 10M

搜索大小在100MB到1GB之間的文件:

$ find /path/to/search -size +100M -size -1G

從文件列表中查找

如果您有需要搜索的文件列表(例如,在.txt文件中),則可以使用find和grep命令的組合來(lái)搜索文件列表。為了使此命令起作用,只需確保要搜索的每個(gè)模式之間都用換行符隔開(kāi)。

$ find /path/to/search | grep -f filelist.txt

grep的-f選項表示“file”,并允許我們指定要匹配的字符串文件。這導致find命令返回與列表中的文件或目錄名稱(chēng)匹配的任何文件或目錄名稱(chēng)。

不在列表中查找

使用上一個(gè)示例中提到的相同文件列表,您還可以使用find來(lái)搜索與文本文件內的模式不符的任何文件。再一次,我們將結合使用find和grep命令;我們只需要用grep指定一個(gè)附加選項:

$ find /path/to/search | grep -f filelist.txt

grep的-v選項表示“逆向匹配”,并且將返回與文件列表中指定的任何模式都不匹配的文件列表。

設置maxdepth

find命令默認將進(jìn)行遞歸搜索。這意味著(zhù)它將在指定的目錄中搜索您指定的模式,以及您告訴它要搜索的目錄中的所有子目錄。

例如,如果告訴find搜索Linux(/)的根目錄,則無(wú)論存在多少個(gè)子目錄,它都會(huì )搜索整個(gè)硬盤(pán)。您可以使用-maxdepth選項來(lái)規避此行為。

在-maxdepth之后指定一個(gè)數字,以指示查找應遞歸搜索的子目錄數。

僅搜索當前目錄中的文件,而不遞歸搜索:

$ find . -maxdepth 0 -name "myfile.txt"

僅在當前目錄和更深的一個(gè)子目錄中搜索文件:

$ find . -maxdepth 1 -name "myfile.txt"

查找空文件(零長(cháng)度)

要使用find搜索空文件,可以使用-empty標志。搜索所有空文件:

$ find /path/to/search -type f -empty

搜索所有空目錄:

$ find /path/to/search -type d -empty

如果希望自動(dòng)刪除find返回的空文件或目錄,那么將此命令與-delete選項結合使用也非常方便。

刪除目錄(和子目錄)中的所有空文件:

$ find /path/to/search -type f -empty -delete

查找最大的目錄或文件

如果您想快速確定系統上哪些文件或目錄占用了最多的空間,則可以使用find進(jìn)行遞歸搜索,并按文件和目錄的大小輸出排序的列表。

如何顯示目錄中最大的文件:

$ find /path/to/search -type f -printf "%s\\t%p\\n" | sort -n | tail -1

請注意,find命令已被排序到另外兩個(gè)方便的Linux實(shí)用程序:sort和tail。 Sort將按文件的大小順序排列文件列表,而tail將僅輸出列表中的最后一個(gè)文件,該文件也是最大的。

如果您要輸出例如最大的前5個(gè)文件,則可以調整tail命令。

$ find /path/to/search -type f -printf "%s\\t%p\\n" | sort -n | tail -5

或者,您可以使用head命令來(lái)確定最小的文件:

$ find /path/to/search -type f -printf "%s\\t%p\\n" | sort -n | head -5

如果要搜索目錄而不是文件,只需在類(lèi)型選項中指定“ d”即可。如何顯示最大目錄:

$ find /path/to/search -type d -printf "%s\\t%p\\n" | sort -n | tail -1

查找setuid設置文件

Setuid是“set user ID on execution”的縮寫(xiě),它是一種文件權限,允許普通用戶(hù)運行具有升級特權(例如root)的程序。

出于明顯的原因,這可能是一個(gè)安全問(wèn)題,但是可以使用find命令和一些選項輕松隔離這些文件。

find命令有兩個(gè)選項可幫助我們搜索具有特定權限的文件:-user和-perm。要查找普通用戶(hù)能夠以root特權執行的文件,可以使用以下命令:

$ find /path/to/search -user root -perm /4000

在上面的屏幕截圖中,我們包含了-exec選項,以便顯示有關(guān)查找返回文件的更多輸出。整個(gè)命令如下所示:

$ find /path/to/search -user root -perm /4000 -exec ls -l {} \\;

您也可以在此命令中用“ root”代替您要作為所有者搜索的任何其他用戶(hù)?;蛘?,您可以搜索具有SUID權限的所有文件,而根本不指定一個(gè)用戶(hù):

$ find /path/to/search -perm /4000

查找sgid設置文件

查找具有SGID設置的文件與查找具有SUID的文件幾乎相同,只是需要將4000的權限更改為2000:

$ find /path/to/search -perm /2000

您還可以通過(guò)在perms選項中指定6000來(lái)搜索,同時(shí)設置了SUID和SGID的文件:

$ find /path/to/search -perm /6000

列出文件未經(jīng)允許被拒絕

使用find命令搜索文件時(shí),您必須對要搜索的目錄和子目錄具有讀取權限。如果您沒(méi)有找到,find將輸出一條錯誤消息,但會(huì )繼續瀏覽您確實(shí)擁有權限的目錄。

image.png

沒(méi)有權限盡管這可能發(fā)生在許多不同的目錄中,但在搜索根目錄時(shí)肯定會(huì )發(fā)生。

這意味著(zhù),當您嘗試在整個(gè)硬盤(pán)上搜索文件時(shí),find命令將產(chǎn)生大量錯誤消息。

為避免看到這些錯誤,您可以將find的stderr輸出重定向到stdout,并將其通過(guò)管道傳遞到grep。

$ find / -name "myfile.txt" 2>%1 | grep -v "Permission denied"

此命令使用grep的-v(反向)選項來(lái)顯示所有輸出,除了顯示“拒絕權限”之外的所有輸出。

查找最近X天內的修改文件

使用find命令上的-mtime選項搜索最近X天內被修改的文件或目錄。它也可以用于搜索X天之前的文件,或X天之前被完全修改過(guò)的的文件。

以下是一些如何在find命令上使用-mtime選項的示例:

搜索最近30天內修改過(guò)的所有文件:

$ find /path/to/search -type f -mtime -30

搜索超過(guò)30天之前已修改的所有文件:

$ find /path/to/search -type f -mtime +30

搜索30天前剛修改過(guò)的所有文件:

$ find /path/to/search -type f -mtime 30

如果希望find命令輸出有關(guān)找到的文件的更多信息,例如修改日期,則可以使用-exec選項并包含ls命令:

$ find /path/to/search -type f -mtime -30 -exec ls -l {} \\;

按時(shí)間排序

要按文件的修改時(shí)間對查找結果進(jìn)行排序,您可以使用-printf選項以可排序的方式列出時(shí)間,然后將其輸出到sort實(shí)用程序。

$ find /path/to/search -printf "%T+\\t%p\\n" | sort

此命令將對舊的文件進(jìn)行排序。如果您希望較新的文件首先顯示,只需傳遞-r(反向)選項即可進(jìn)行排序。

$ find /path/to/search -printf "%T+\\t%p\\n" | sort -r

 


提交成功!非常感謝您的反饋,我們會(huì )繼續努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題:
-->