find 命令有什么用 ,?find 命令在 Linux 和 UNIX 系統(tǒng)中用于查找文件和目錄,,并可對其執(zhí)行后續(xù)操作。 在 find 命令的幫助下,,系統(tǒng)管理員可以根據(jù)一些搜索條件查找所需的文件,。我們可以使用單個(gè)或組合多個(gè)標(biāo)準(zhǔn),然后可以對獲得的結(jié)果執(zhí)行操作,??蛇x搜索條件:文件名稱、目錄名稱,、創(chuàng)建日期,、修改日期、屬主,、權(quán)限,。 find 命令語法格式: $ find <path> {file-or-directory-name} <options> <action-on-result> <action-on-result> 可選項(xiàng):
(1) 查找當(dāng)前工作目錄下的所有文件和目錄若要只查找目錄,,請運(yùn)行
若要只查找文件,,請運(yùn)行 $ find . -type f (2) 列出特定目錄下的所有文件假設(shè)我們要列出 /home/linuxtechi/Downlods 目錄下的所有文件和目錄,,運(yùn)行
如果只查找文件,請運(yùn)行 $ find /home/linuxtechi/Downloads -type f 如果只查找目錄,,請運(yùn)行
(3) 從目錄中按文件名查找文件要在特定目錄中按名稱查找文件,,請運(yùn)行 $ sudo find /home -type f -name cleanup.sh 上面的命令將在 /home 文件夾中查找 cleanup.sh 文件。我們還可以在 /var/log 目錄中查找擴(kuò)展名為 .log 的所有文件,,運(yùn)行
(4) 在多個(gè)目錄中查找文件假設(shè)我們想在 /home 和 /root 文件夾中找到 .sh 擴(kuò)展名的文件,,請運(yùn)行 $ sudo find /home /root -type f -name '*.sh' (5) 忽略文件名大小寫為了查找文件名不受大小寫影響,我們可以在 find 命令中使用 -iname 選項(xiàng)
(6) 查找除上述類型之外的所有文件類型假設(shè)我們要查找所有不是上述類型的文件,,為此可以在 find 命令中使用 -not 選項(xiàng),,如下所示 $ sudo find /home -type f -not -name '*.mp3' (7) 使用多個(gè)條件查找文件我們還可以組合多個(gè)條件來使用正則表達(dá)式搜索文件。假設(shè)我們想在主目錄中搜索擴(kuò)展名為 .sh 和 .mp3 的文件,,運(yùn)行
(8) 使用 OR 條件查找文件我們還可以組合多個(gè)搜索條件,,然后使用 OR 操作符根據(jù)一個(gè)條件中的任何一個(gè)條件的滿足來查找文件 $ find $HOME -name '*.sh' -o -name 'jumpscripts'/home/linuxtechi/automation/cleanup.sh/home/linuxtechi/dumpdata.sh$ 9) 根據(jù)權(quán)限查找文件要根據(jù)權(quán)限查找文件,請?jiān)诓檎颐钪惺褂?- perm 選項(xiàng),。 例如在 /home 目錄中查找具有 0777 權(quán)限的所有文件,,運(yùn)行
在用戶目錄查找所有可執(zhí)行文件 $ find $HOME -type f -perm /a+x (10) 查找所以隱藏文件要搜索用戶主目錄中的所有隱藏文件,請運(yùn)行命令
(11) 找到所有具有 SGID 的文件要定位所有具有 SGID 位的文件,,我們可以使用 $ sudo find / -perm /g=s (12) 找到所有帶有 SUID 的文件要定位所有 SUID 位的文件,,運(yùn)行
(13) 查找所有可讀但沒有執(zhí)行權(quán)限的文件若要只查找所有人都可讀但任何人都不能執(zhí)行的文件,請運(yùn)行 $ find $HOME -perm -a+r \! -perm /a+x (14) 搜索幾種文件類型在一個(gè)查找命令中,,我們可以搜索多種文件類型
(15) 查找用戶擁有的所有文件To locate all the file that are owned by a particular user in /home directory, run following command, 要找到 /home 目錄中屬于特定用戶的所有文件,,請運(yùn)行以下命令 $ sudo find $HOME -user linuxtechi (16) 找到一個(gè)組擁有的所有文件下面的命令將搜索 apache 組擁有的所有文件。
(17) 按文件大小查找所有文件Use '-size’ option in find command to search files based on the size. 使用 -size 選項(xiàng)根據(jù)文件大小進(jìn)行搜索 查找等于 50MB 的文件 $ find $HOME -size 50M/home/linuxtechi/dbstuff$ 查找大于 50MB 的文件
查找小于 50MB 的文件 $ find $HOME -size -50M 查找大小在 40MB 到 500MB 之間的文件
(18) 不下行目錄到其他文件系統(tǒng)-xdev 選項(xiàng)列出了另一個(gè)文件系統(tǒng)中的掛載點(diǎn)或分區(qū),,但它不會(huì)向下查找它們,。 下面的命令將在 / 目錄中搜索大于 100MB 的所有文件,排除其他掛載的文件系統(tǒng),,重定向錯(cuò)誤消息到 /dev /null $ find / -xdev -size +100M 2>/dev/null (19) 查找 N 天前修改過的文件假設(shè)我們想要定位 10 天前修改過的所有文件,。我們可以使用 -mtime 選項(xiàng)來實(shí)現(xiàn)這一點(diǎn)
(20) 找出 N 天前被訪問過的文件假設(shè)我們想要定位 10 天前被訪問過的所有文件。我們可以使用 -atime 選項(xiàng)來實(shí)現(xiàn)這一點(diǎn) $ sudo find / -atime 30 2>/dev/null (21) 找到所有的空文件和目錄要在用戶主目錄中搜索所有空文件,,請運(yùn)行
類似地,定位所有空目錄 $ find $HOME -type d -empty (22) 搜索和刪除文件使用 find 命令,,我們在單個(gè)命令中搜索和刪除文件,,-delete 選項(xiàng)可以刪除文件。 在下面的例子中,,我們正在從用戶的主目錄中搜索并刪除 mp3 文件
注意: 上面是破壞性命令,,執(zhí)行它時(shí)要小心。 (23) 查找最大和最小的文件To find largest and smallest file, we will combine sort command with find command & if we further want to list top three of those largest files, we will combine head 為了找到最大和最小的文件,,我們將結(jié)合 sort 命令和 find 命令,,如果我們進(jìn)一步想列出最大文件中的前三個(gè),,我們將結(jié)合 head 命令列出用戶主目錄中前三個(gè)文件 $ find $HOME -type f -exec ls -s {} \; | sort -n -r | head -351200 /home/linuxtechi/dbstuff8276 /home/linuxtechi/.cache/gnome-software/appstream/components.xmlb2764 /home/linuxtechi/.local/share/gnome-photos/tracker3/private/meta.db-wal$ 我們同樣可以在用戶的主目錄中找到最小的文件
(24) 找到所有日志文件并將它們重定向到一個(gè)文件To run command on find command result use -exec option, it’s syntax given below, 要在查找結(jié)果上運(yùn)行命令,使用 -exec 選項(xiàng),,其語法如下所示 $ find -exec {} ; 以下命令將找到所有文件,,并將其名稱重定向到 /tmp/logsfiles.txt $ sudo find /var -type f -name '*.log' -exec ls -lah {} \; > /tmp/logfiles.txt (25) 搜索文件并更改其權(quán)限假設(shè)我們想要搜索權(quán)限為 777 的所有文件,并將其權(quán)限更改為 644
(26) 從文件中搜索文本Let’s assume we want to search error word in all log files, run following command 假設(shè)我們要在所有日志文件中搜索帶有 error 關(guān)鍵字的文件,,運(yùn)行以下命令 $ sudo find /var -type f -name '*.log' -exec grep -i 'error' {} \; 在上面的命令中,,我們結(jié)合了 find 和 grep 命令來完成任務(wù)。 我的開源項(xiàng)目
|
|