Linux find 指令介紹(尋找檔案、目錄)
Linux 的 find
指令是一個非常強大而且必定要學習的工具,用於在文件系統中搜索符合特定條件的文件或目錄。以下想要介紹這個指令,通過各種參數和選項來定制搜索條件,讓你能夠精確地找到所需的文件。
基本語法
find
指令的基本語法如下:
find [路徑...] [選項] [動作]
- 路徑:指定
find
指令開始搜索的目錄。如果不指定,默認為當前目錄。 - 選項:定義搜索的條件,例如按文件名、文件類型、修改時間等。
- 動作:對搜索結果執行的操作,如列印文件名、刪除文件等。如果不指定動作,默認動作是列印所有找到的文件的路徑。
常用選項
- 按名稱搜索:
-name 'pattern'
:搜索文件名匹配指定的模式的文件。模式可以包含通配符,如*
和?
。- 示例:
find /home/user -name '*.txt'
- 按類型搜索:
-type f
:僅搜索文件。-type d
:僅搜索目錄。- 示例:
find /var/log -type f
- 按修改時間搜索:
-mtime +n
:搜索在 n 天之前被修改過的文件。-mtime -n
:搜索在最近 n 天內被修改過的文件。- 示例:
find / -mtime -10
- 按大小搜索:
-size +n
:搜索大於 n 單位的文件。單位可以是 k(KB)、M(MB)、G(GB)。-size -n
:搜索小於指定大小的文件。- 示例:
find / -size +100M
常用動作
-print
:輸出匹配文件的完整路徑(這是默認動作)。-delete
:刪除找到的文件。-exec cmd {} \;
:對找到的每個文件執行指定的命令。{}
是一個占位符,代表當前找到的文件名。- 示例:
find /tmp -type f -mtime +30 -exec rm {} \;
最常使用的動作
搜尋整個硬碟中大於100MB的log檔案(不分大小寫),並且把她刪除
find / -type f -size +100M -iname "*.log" -delete
使用案例
尋找並刪除 30 天前的臨時文件:
find /tmp -type f -mtime +30 -delete
尋找特定大小的日誌文件並列出詳細信息:
find /var/log -type f -size +50M -exec ls -lh {} \;
尋找所有 JPG 文件並複製到另一個目錄:
find /home/user/Pictures -name '*.jpg' -exec cp {} /home/user/Backup/ \;
find 完整參數
- -mtime : 搜尋檔案的修改時間(天)
- -mmin : 搜尋檔案的修改時間(分鐘)
- -ctime : 搜尋檔案的建立時間(天)
- -cmin : 搜尋檔案的建立時間(分鐘)
- -atime : 搜尋檔案的最後開啟時間(天)
- -amin : 搜尋檔案的最後開啟時間(分鐘)
- -size : 搜尋檔案的大小
- -name : 搜尋檔案名稱(有分大小寫)
- -iname : 搜尋檔案名稱(不分大小寫)
- -type f : 只搜尋“檔案”
- -type d : 只搜尋“目錄”
- -exec <cmd> {} \; : 把搜尋結果導向指令來執行
- -user : 搜尋特定使用者的檔案或目錄
- -o : 邏輯運算為「或」的意思
- -print : 將結果印出於螢幕
近期留言