一、基本語法
find [path] [expression]
find命令主要用於搜索文件和目錄,它支持按照名字、大小、時間、權限等屬性來搜索文件,並且可以根據搜索結果進一步執行命令或者將結果導出到文件中。
上面的語法中,path為待搜索的目錄路徑,可以為相對路徑或絕對路徑;expression為搜索條件,可以根據需要添加不同的選項進行過濾。
下面列舉幾個最常見的選項:
-name
:按照文件名進行搜索,支持通配符,如find /home -name "*.txt"
表示在/home目錄下搜索所有擴展名為.txt的文件。-type
:按照文件類型進行搜索,支持f(文件)、d(目錄)、l(符號鏈接)等類型,如find /usr -type f
表示在/usr目錄下搜索所有文件。-size
:按照文件大小進行搜索,支持+(大於)、-(小於)、c(精確匹配)等操作符,單位為512位元組塊,如find /var -size +10M
表示在/var目錄下搜索大小大於10MB的文件。-ctime
、-mtime
、-atime
:按照文件創建時間、修改時間、訪問時間進行搜索,支持+(大於)、-(小於)、c(精確匹配)等操作符,單位為日,如find / -mtime -7
表示在/目錄下搜索最近7天內被修改的文件。-user
、-group
:按照文件擁有者、所屬組進行搜索,如find /home -user admin
表示在/home目錄下搜索所有屬於admin用戶的文件。
二、常用示例
1. 查找所有空文件
find / -type f -empty
在根目錄下查找所有空文件,即大小為0的普通文件。
2. 查找指定類型的文件
find /home -name "*.txt" -o -name "*.pdf"
在/home目錄下查找所有擴展名為.txt或者.pdf的文件,-o表示邏輯或。
3. 查找大於指定大小的文件
find /var -type f -size +10M
在/var目錄下查找所有大小大於10MB的文件。
4. 查找最近N天被修改過的文件
find / -type f -mtime -7
在根目錄下查找最近7天內被修改過的文件。
5. 查找指定用戶的文件
find /home -user tom
在/home目錄下查找所有屬於tom用戶的文件。
三、高級應用
除了基本語法外,find命令還可以與其他命令結合使用,實現更為強大的功能。
1. 批量修改權限
find /var/www -type f -exec chmod 644 {} \;
在/var/www目錄下查找所有文件,並將其權限修改為644。
2. 查找並打包指定類型的文件
find /var/log -name "*.log" -type f -print0 | xargs -0 tar czvf logs.tar.gz
在/var/log目錄下查找所有擴展名為.log的文件,然後使用xargs命令將結果傳遞給tar命令打包成tar.gz壓縮包。
3. 刪除指定條件的文件
find /tmp -type f -name "*.tmp" -mtime +7 -delete
在/tmp目錄下查找所有擴展名為.tmp的文件,並刪除最近7天未被修改的文件。
四、總結
find命令是Linux中非常實用的文件搜索和查詢工具,掌握基本語法和常用選項可以大大提高工作效率。通過結合其他命令使用,find命令還可以實現批量修改權限、打包壓縮、定時清理等高級應用。
原創文章,作者:VCZHC,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/318186.html