LINUX SHELL – find命令高級用法

LINUX SHELL – find命令高級用法

LINUX SHELL – find命令高級用法


資料來源: https://mp.weixin.qq.com/s/wJYrzV_9qybrZR_0C9ULCA

1.查找空文件

find ./ -size 0 #查找目前的目錄下大小為0的文件

2.查找空目錄

find -type d -empty

3.查找時排除文件

find ./ -name "*test*"  ! -name "*.log" #排除.log文件

4.查找時排除目錄

find .  -path ./test -prune -o -name "*.txt"
find ./ ( -path "./test" -o -path "./home" ) -prune -o -name "*.txt" 

5.對查找到的檔執行命令操作

find -name "*.log" |xargs rm -f #找到.log檔後,刪除
find -name "*test" |xargs chmod 755 #將找到檔的許可權修改為755
find -name "*test" |xargs grep "hello" #查找包含hello字串的test檔

6.刪除查找到的檔

find ./ -name "*.log" -delete #刪除以log為尾碼的檔

7.多條件組合查找

find ./ -type f -o -type l #查找普通檔和符號連結檔
find ./ -name "*.zip" -o -name "*.gz" #在目前的目錄下查找zip包和gz包:
find ./ -name "*test" -a -type l #查找名為test的符號連結檔:
find ./ ! -name "*.log" #查找log文件以外的文件

8.查找比某文件新或某文件舊的文件

find ./ ! -newer 1.log |xargs ls -al #列出比1.log更舊的文件
find ./  -newer 1.log |xargs ls -al #列出比1.log更新的檔

9.查找結果以特定格式輸出

find ./ -name "*.log" -printf "%f %a %M %s"

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *