find命令簡介
find命令是linux下用於系統查找文件的強大工具,可以根據文件的大小,名稱,權限,修改日期等進行查詢,參考一些網上非常優秀的博客來進行一些簡單應用向的總結。首先是find命令的使用形式:
find paths expression actions
指定多條路徑(paths)執行指定過濾條件(expression)並執行相關操作(actions),最終得到結果。
使用find遍歷所有文件
以下代碼將遍歷當前目錄所有文件及目錄,以及子目錄下的文件及目錄
針對以下的目錄結果:
$ tree dir_tree
dir_tree
├── dir_1
│ ├── file_1.png
│ ├── file_1.sh
│ └── file_1.txt
├── dir_2
│ ├── file_2.png
│ ├── file_2.sh
│ └── file_2.txt
└── dir_3
├── file_3.png
├── file_3.sh
└── file_3.txt
運行如下代碼,將遍歷所有文件
$ find dir_tree/
dir_tree/
dir_tree/dir_3
dir_tree/dir_3/file_3.sh
dir_tree/dir_3/file_3.txt
dir_tree/dir_3/file_3.png
dir_tree/dir_2
dir_tree/dir_2/file_2.sh
dir_tree/dir_2/file_2.txt
dir_tree/dir_2/file_2.png
dir_tree/dir_1
dir_tree/dir_1/file_1.png
dir_tree/dir_1/file_1.sh
dir_tree/dir_1/file_1.txt
使用find執行文件過濾
-name
將得到指定名稱的文件,可以使用通配符-iname
與-name
相同,但是是case insensitive大小寫不敏感-path
與-ipath
與-name/-iname
類似,但是提供全路徑的匹配
--maxdepth/-mindepth
提供最大和最小遍歷深度-type
指定文件類型 f文件/d目錄/l符號鏈接-empty
空文件!
取反-user
用戶-mtime/-atime/-ctime
,修改/訪問/創建時間使用如下截圖
-size
文件大小-perm
例如-perm 755
或者-perm -u=rwx,g=rx,o=rx
,如果只關注某一個權限,可以在前加一個斜槓,例如以下代碼將列出所有人都有read權限的文件
find dir_tree -perm /a=r -exec ls -ld {} \;
-a
和-o
可以將這些命令進行and和or的組合,判斷複雜時需要加括號,而括號和判斷語句之間應該有一個空格相間隔,同時使用單引號包圍或者反斜槓進行轉義,如下例子將找到目錄下後綴爲sh和png的文件。
$ find dir_tree/ '(' -name "*.sh" -o -name "*.png" ')' -a -type f
dir_tree/dir_3/file_3.sh
dir_tree/dir_3/file_3.png
dir_tree/dir_2/file_2.sh
dir_tree/dir_2/file_2.png
dir_tree/dir_1/file_1.png
dir_tree/dir_1/file_1.sh
使用find對搜索結果執行命令
-delete
刪除操作-exec
執行自定義命令,如下所示
$ find dir_tree/ '(' -name "*.sh" -o -name "*.png" ')' -a -type f -exec echo "cat {} > xxx" ';'
cat dir_tree/dir_3/file_3.sh > xxx
cat dir_tree/dir_3/file_3.png > xxx
cat dir_tree/dir_2/file_2.sh > xxx
cat dir_tree/dir_2/file_2.png > xxx
cat dir_tree/dir_1/file_1.png > xxx
cat dir_tree/dir_1/file_1.sh > xxx