我正在編寫一個腳本來查找給定資料夾中超過 30 天的文件。根據要求,我必須僅刪除具有擴展名的文件.紀錄或者。並跳過子目錄。
以下命令傳回 30 天前修改的所有 .log* 檔案。但是,它會傳回所有 .out 文件,甚至是最近的文件。下面的程式碼有什麼問題嗎?
find -maxdepth 1 -mtime +30 -type f -name "*.log*" -o -name "*.out*"
你能告訴我上面的陳述有什麼問題嗎
答案1
嘗試:
find -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \)
問題是find
邏輯或的結合比邏輯或更緊密。括號抵消了這一點。
沒有括號,find
正在尋找匹配的文件任何一個(A)-mtime +30 -type f -name "*.log*"
或者(二) -name "*.out*"
.
使用括號,find
正在尋找 (a) 相符的文件-mtime +30 -type f
和(b) 匹配-name "*.log*"
或-name "*.out*"
。