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"