find 命令是 Linux/Unix 系統中非常常用的一種命令,用于在指定目錄及其子目錄中查找文件并進行相應的操作。下面是 find 命令的詳細介紹:
基本語法
cssCopy code
find [path] [expression]
其中,path 表示要查找的目錄或文件,可以是相對路徑或絕對路徑;expression 表示查找的條件,例如按名稱查找、按類型查找、按大小查找等等。
常用參數
-name pattern:按名稱查找文件,pattern 表示文件名的模式,支持通配符,例如 *.txt。
-type type:按類型查找文件,type 表示文件類型,例如 f 表示普通文件,d 表示目錄。
-size size:按文件大小查找文件,size 表示文件大小,支持多種單位,例如 10M 表示 10MB,+10M 表示大于 10MB。
-mtime days:按修改時間查找文件,days 表示天數,-n 表示修改時間在 n 天以內,+n 表示修改時間在 n 天以前。
-exec command {} \;:執行命令,{} 表示查找到的文件名,\; 表示命令結束。
示例
1.查找當前目錄下所有的文件和目錄:
find .
2.查找當前目錄下所有的文件,但不包括子目錄:
find . -maxdepth 1 -type f
3.查找 /usr/local 目錄下所有的 .txt 文件:
find /usr/local -name "*.txt"
4.查找 /usr/local 目錄下所有的 .txt 文件,但不包括子目錄:
find /usr/local -maxdepth 1 -name "*.txt"
5.查找 /usr/local 目錄下所有的 .txt 文件,并且文件大小大于 10MB:
find /usr/local -name "*.txt" -size +10M
6.查找 /usr/local 目錄下所有修改時間在 7 天以內的 .txt 文件:
find /usr/local -name "*.txt" -mtime -7
7.查找 /usr/local 目錄下所有 .txt 文件,并將它們刪除:
find /usr/local -name "*.txt" -exec rm {} \;
注意事項
·find 命令默認會查找指定目錄及其子目錄中的所有文件和目錄,如果不想查找子目錄,可以使用 -maxdepth 參數。
·find 命令查找到的文件名是相對路徑或絕對路徑,如果想要在執行命令時使用相對路徑,需要將 {} 替換為 ./{}。
·-exec