find命令 find命令的功能是根據給定的路徑和條件查找相關文件或目錄,可以使用的參數很多,並且支持正則表達式,結合管道符後能夠實現更加複雜的功能,是系統管理員和普通用戶日常工作必須掌握的命令之一。 find命令通常進行的是從根目錄(/)開始的全盤搜索,有別於whereis、which、locat ...
find命令
find命令的功能是根據給定的路徑和條件查找相關文件或目錄,可以使用的參數很多,並且支持正則表達式,結合管道符後能夠實現更加複雜的功能,是系統管理員和普通用戶日常工作必須掌握的命令之一。
find命令通常進行的是從根目錄(/)開始的全盤搜索,有別於whereis、which、locate……等等的有條件或部分文件的搜索。對於伺服器負載較高的情況,建議不要在高峰時期使用find命令的模糊搜索,會相對消耗較多的系統資源。
命令大全
find命令的格式很簡單,一般分成三個部分:1)find命令;2)搜索路徑(目錄可以寫多個);3)表達式。對於find命令,最需要學習的是表達式這一段。表達式決定了我們要找的文件是什麼屬性的文件,還可以指定一些“動作”,比如將匹配某種條件的文件刪除。所以,find命令的核心就是表達式的指定方法。在這裡,我們首先用下表說明find命令各參數的含義:
參數命令 | 用法 |
---|---|
-name | 按文件名稱查找 |
-user | 按文件擁有者查找 |
-group | 按文件擁有組查找 |
-type b/d/c/p/l/f | 按文件類型查找(後面的字幕字母依次表示塊設備、目錄、字元設備、管道、鏈接文件、文本文件) |
-perm | 按文件許可權查找 |
-exec | 對查找到的文件執行指定動作 |
-maxdepth/-mindepth | 指定查找範圍最大/最小為第幾級目錄 |
-cmin | 按文件修改時間查找 |
-size | 按文件大小查找 |
-o / -a /-not | 查找條件或/且/非 |
-prune | 忽略某個目錄 |
-nouser / -nogroup | 匹配無所有者/所有組的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2舊的文件 |
-mtime(ctime/atime) -n +n | 匹配修改內容的時間(匹配訪問文件的時間/匹配修改文件許可權的時間)(-n指n天以內,+n指n天以前) |
示例:
-
全盤搜索系統中所有以.service結尾的文件:
find / -name *.service
("/"代表所有的目錄) -
在/etc目錄中搜索所有大約1M大小的文件:
find /etc -size +1M
[root@localhost ~] find /etc -size +1M /etc/udev/hwdb.bin /etc/selinux/targeted/active/policy.kern /etc/selinux/targeted/contexts/files/file_contexts.bin /etc/selinux/targeted/policy/policy.31
-
在/var目錄中搜索所有屬於指定用戶的文件:
find /var -user postgres
-
列出當前工作目錄中的所有文件、目錄以及子文件信息:
find .
[root@localhost ~] find . ./.gnupg ./.gnupg/gpg.conf ./.gnupg/secring.gpg ./.gnupg/pubring.gpg~ ./.gnupg/pubring.gpg ./.gnupg/trustdb.gpg ./test ./.viminfo ......
-
在/var/log目錄下搜索所有指定尾碼的文件,尾碼不需要大小寫
find /var.log -iname "*.log"
[root@localhost ~] find /var/log -iname "*.log" /var/log/tuned/tuned.log /var/log/audit/audit.log /var/log/anaconda/anaconda.log /var/log/anaconda/X.log .......
-
在/var/log目錄下搜索所有尾碼不是.log的文件:
find /var/log ! -name "*.log"
[root@localhost ~] find /var/log ! -name "*.log" /var/log/btmp /var/log/cron-20220508 /var/log/maillog-20220508 /var/log/messages-20220508 /var/log/secure-20220508 /var/log/spooler-20220508
-
搜索當前工作目錄中的所有近7天被修改過的文件:
find . -mtime +7
[root@localhost] find . -mtime +7 . ./.DS_Store ./assets ./assets/postgresql-12.10.tar.gz ./conf ./conf/pg_hba.conf
-
全盤搜索系統中所有類型為目錄,且許可權為1777的目錄文件:
find / -type d -perm 1777
[root@localhost ~] find / -type d -perm 1777 /dev/mqueue /dev/shm /var/tmp /tmp
-
全盤搜索系統中所有類型為普通文件,且可以執行的文件信息:
find / -type f -perm = /a=x
[root@localhost ~] find / -type f -perm /a=x /usr/src/kernels/3.10.0-1160.59.1.el7.x86_64/scripts/mod/mk_elfconfig /usr/src/kernels/3.10.0-1160.59.1.el7.x86_64/scripts/mod/modpost /usr/src/kernels/3.10.0-1160.59.1.el7.x86_64/tools/objtool/objtool
-
全盤搜索系統中所有尾碼為.mp4的文件,並刪除所有查找到的文件:
[root@linuxcool ~] find / -name "*.mp4" -exec rm -rf {} \;
本文來自博客園,作者:ivanlee717,轉載請註明原文鏈接:https://www.cnblogs.com/ivanlee717/p/16280595.html