歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux find 命令詳解

Linux find 命令詳解

日期:2017/2/28 14:50:12   编辑:Linux教程
find path -option [-print] [-exec -ok command] {} \;
find命令的參數:
pathname: find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。
-print: find命令將匹配的文件輸出到標准輸出。
-exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' { } \;,注意{ }和\;之間的空格。
-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。
#-print 將查找到的文件輸出到標准輸出
#-exec   command   {} \;      —–將查到的文件執行command操作,{} 和 \;之間有空格
#-ok 和-exec相同,只不過在操作前要詢用戶

1、根據文件名或正則表達式匹配搜索

選項-name的參數指定文件名所必須匹配的字符串。

例:匹配所有以.txt結尾的文件名
$find /root/ -name "*.txt" -print
選項-iname,該選項的作用和-name類似,不過匹配的時候忽略名字的大小寫。

匹配多個條件,可以使用OR條件操作
$find . /root/ \( -name "*.txt" -o -name "*.pdf" \) -print

選項-path的參數可以使用通配符來匹配文件路徑或文件。
$find . -path "*include/apu*"       
./httpd-2.2.22/srclib/apr-util/include/apu_version.h
./httpd-2.2.22/srclib/apr-util/include/apu.hw
./httpd-2.2.22/srclib/apr-util/include/apu_errno.h
./httpd-2.2.22/srclib/apr-util/include/apu.hnw

選項-regex的參數和-path類似,不過-regex是基於正則表達式來匹配文件路徑。
下面命令匹配.py或.sh文件
$find . -regex ".*\(\.py\|\.ssh\)$"
./.ssh
./httpd-2.2.22/srclib/apr/build/gen-build.py
2、否定參數
find也可以使用"!"否定參數的含義。
例如:匹配所有不是以.txt結尾的文件名
$find . ! -name "*.txt"
3、基於目錄的深度搜索
使用-maxdepth和-mindepth參數來限制find命令遍歷目錄的深度。
例:列出當前目錄下的所有普通文件。
$find . -maxdepth 1 -type f
-maxdepth和-mindepth應當作為find的第三個參數出現,如果作為第四個或之後的參數,則會影響find的效率。
4、根據文件的類型搜索
使用-type對文件搜索進行過濾,以下是type參數對應文件的類型
普通文件  f、符號文件 l、目錄 d、字符設備 c、塊設備 b、套接字 s、Fifo p。
例:列出所有目錄
$find . -type d -print
5、根據文件時間進行搜索
系統每個文件有三種時間戳,如下所示:
訪問時間(-atime):用戶最近一次訪問時間
修改時間(-mtime):文件內容最後一次修改時間。
變化時間(-ctime):文件元數據(例如權限或所有權)最後一次改變時間
打印出最近7天有過訪問的所有文件
$find . type f -atime -7 print

打印出訪問時間超過7分鐘的所有文件
$find . type f -admin -7 print
6、基於文件大小的搜索
$find . -type f -size +20k
#大於20KB的文件
$find . -type f -size -20k
#小於20KB的文件
$find . -type f -size 20k
#等於20KB的文件
7、刪除匹配的文件
-delete可以刪除find查找到的.swp文件
$find . -type f -name "*.swp" -delete
刪除當前目錄下的所有的.swp文件
8、基於文件權限和所有權的匹配
例:打印出權限為644的文件
$find . -type f -perm 644 -print

查找沒有執行權限的PHP文件
$find . -type f -name "*.php" ! -perm 644 -print

打印出用戶slynux所擁有的文件:
$find . -type f -user slynux -print
9、結合find執行命令或動作
借助選項-exec與其他命令結合。
示例:
#find . -type f -user mysql -exec chown root {} \;
在當前目錄下修改屬於用戶mysql的文件為屬於root用戶。

#find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;
將10天前的.txt文件復制到OLD目錄下
10、find跳過特定的目錄
打印出不包過在.svn的目錄的所有文件的名稱
#find . \( -name ".svn" -prune \) -o \( -type f -print\)
Copyright © Linux教程網 All Rights Reserved