find命令

find命令

find命令用來在指定目錄下查找文件,任何位於參數以前的字符串都將被視爲要查找的目錄名,若是使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件,而且將查找到的子目錄和文件所有進行顯示。html

語法

find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec|time] [path...] [expression]

參數

  • -amin<minute>: 查找在指定時間曾被存取過的文件或目錄,單位以分鐘計算。
  • -anewer<file or folder>: 查找其存取時間較指定文件或目錄的存取時間更接近如今的文件或目錄。
  • -atime<day>: 查找在指定時間曾被存取過的文件或目錄,單位以天計算。
  • -cmin<minute>: 查找在指定時間之時被更改過的文件或目錄。
  • -cnewer<file or folder>查找其更改時間較指定文件或目錄的更改時間更接近如今的文件或目錄。
  • -ctime<day>: 查找在指定時間之時被更改的文件或目錄,單位以天計算。
  • -daystart: 從本日開始計算時間。
  • -depth: 從指定目錄下最深層的子目錄開始查找。
  • -empty: 尋找文件大小爲0 Byte的文件,或目錄下沒有任何子目錄或文件的空目錄。
  • -exec<command>: 假設find指令的回傳值爲True,就執行該指令。
  • -false: 將find指令的回傳值皆設爲False
  • -fls<file list>: 此參數的效果和指定-ls參數相似,但會把結果保存爲指定的列表文件。
  • -follow: 排除符號鏈接。
  • -fprint<file list>: 此參數的效果和指定-print參數相似,但會把結果保存成指定的列表文件。
  • -fprint0<file list>: 此參數的效果和指定-print0參數相似,但會把結果保存成指定的列表文件。
  • -fprintf<file list><output format>: 此參數的效果和指定-printf參數相似,但會把結果保存成指定的列表文件。
  • -fstype<file system type>: 只尋找該文件系統類型下的文件或目錄。
  • -gid<group id>: 查找符合指定之羣組識別碼的文件或目錄。
  • -group<group name>: 查找符合指定之羣組名稱的文件或目錄。
  • -help, --help: 在線幫助。
  • -ilname<template style>: 此參數的效果和指定-lname參數相似,但忽略字符大小寫的差異。
  • -iname<template style>: 此參數的效果和指定-name參數相似,但忽略字符大小寫的差異。
  • -inum<inode num>: 查找符合指定的inode編號的文件或目錄。
  • -ipath<template style>: 此參數的效果和指定-path參數相似,但忽略字符大小寫的差異。
  • -iregex<template style>: 此參數的效果和指定-regexe參數相似,但忽略字符大小寫的差異。
  • -links<number of connections>: 查找符合指定的硬鏈接數目的文件或目錄。
  • -iname<template style>: 指定字符串做爲尋找符號鏈接的範本樣式。
  • -ls: 假設find指令的回傳值爲Ture,就將文件或目錄名稱列出到標準輸出。
  • -maxdepth<directory level>: 設置最大目錄層級。
  • -mindepth<directory level>: 設置最小目錄層級。
  • -mmin<minute>: 查找在指定時間曾被更改過的文件或目錄,單位以分鐘計算。
  • -mount: 此參數的效果和指定-xdev相同。
  • -mtime<24 hour>: 查找在指定時間曾被更改過的文件或目錄,單位以24小時計算。
  • -name<template style>: 指定字符串做爲尋找文件或目錄的範本樣式。
  • -newer<file or folder>: 查找其更改時間較指定文件或目錄的更改時間更接近如今的文件或目錄。
  • -nogroup: 找出不屬於本地主機羣組識別碼的文件或目錄。
  • -noleaf: 不去考慮目錄至少需擁有兩個硬鏈接存在。
  • -nouser: 找出不屬於本地主機用戶識別碼的文件或目錄。
  • -ok<command>: 此參數的效果和指定-exec相似,但在執行指令以前會先詢問用戶,若回答yY,則放棄執行命令。
  • -path<template style>: 指定字符串做爲尋找目錄的範本樣式。
  • -perm<permission value>: 查找符合指定的權限數值的文件或目錄。
  • -print: 假設find指令的回傳值爲Ture,就將文件或目錄名稱列出到標準輸出。格式爲每列一個名稱,每一個名稱前皆有./字符串。
  • -print0: 假設find指令的回傳值爲Ture,就將文件或目錄名稱列出到標準輸出。格式爲所有的名稱皆在同一行。
  • -printf<output format>: 假設find指令的回傳值爲Ture,就將文件或目錄名稱列出到標準輸出。格式能夠自行指定。
  • -prune: 不尋找字符串做爲尋找文件或目錄的範本樣式;
  • -regex<template style>: 指定字符串做爲尋找文件或目錄的範本樣式。
  • -size<file size>: 查找符合指定的文件大小的文件。
  • -true: 將find指令的回傳值皆設爲True
  • -type<file type>: 只尋找符合指定的文件類型的文件。
  • -uid<user id>: 查找符合指定的用戶識別碼的文件或目錄。
  • -used<day>: 查找文件或目錄被更改以後在指定時間曾被存取過的文件或目錄,單位以日計算。
  • -user<owner name>: 查找符和指定的擁有者名稱的文件或目錄。
  • -version, --version: 顯示版本信息。
  • -xdev: 將範圍侷限在先行的文件系統中。
  • -xtype<file type>: 此參數的效果和指定-type參數相似,差異在於它針對符號鏈接檢查。

示例

查找/tmp/目錄及其子目錄下全部拓展名爲py的文件。node

find /tmp/ -name *.py
# /tmp/file.py

查找/tmp/目錄及其子目錄下全部通常文件。linux

find /tmp/ -type f
# /tmp/file.c
# /tmp/file.txt
# /tmp/a.out
# /tmp/www/1.txt
# /tmp/file.py
# /tmp/file
# ...

查找/tmp/目錄及其子目錄下全部最近1天內更改過的文件,+1則表示1天前更改過文件。git

find /tmp/ -ctime -1
# /tmp/
# /tmp/1
# /tmp/file.txt
# /tmp/file

查找/tmp/目錄及其子目錄下全部更改時間在7日之前的普通文件,並在刪除以前詢問是否刪除。github

find /tmp/ -type f -mtime +7 -ok rm {} \;
# < rm ... /tmp/file.py > ? n
# ...

查找/tmp/目錄及其子目錄下全部文件屬主具備讀、寫權限,而且文件所屬組的用戶和其餘用戶具備讀權限的文件。shell

find /tmp/  -type f -perm 644 -exec ls -l {} \;
# -rw-r--r-- 1 root root 60 Jul 22 19:55 /tmp/file.c
# -rw-r--r-- 1 www www 73 Jul 23 20:54 /tmp/file.txt
# ...

查找/tmp/目錄及其子目錄下全部文件長度爲0的普通文件,並列出它們的完整路徑。express

find /tmp/ -type f -size 0 -exec ls -l {} \;
# -rwx------ 1 root root 0 Jul 11 17:25 /tmp/file.py

每日一題

https://github.com/WindrunnerMax/EveryDay

參考

https://man.linuxde.net/find
https://www.runoob.com/linux/linux-comm-find.html
https://www.tutorialspoint.com/unix_commands/find.htm
相關文章
相關標籤/搜索