Find
什麼都沒找到時使查找失敗
當
find
被呼叫以查找任何內容時,它仍然以程式碼 0 退出。有沒有辦法讓它在找不到文件時返回一個指示失敗的退出程式碼?
如果您
grep
支持讀取 NUL 分隔的行(例如帶有 GNUgrep
的GNU-z
),您可以使用它來測試是否有任何輸出find
:find /some/path -print0 | grep -qz .
要將數據通過管道傳輸到另一個命令,您可以刪除該
-q
選項,讓grep
數據保持不變,同時在沒有任何結果時仍然報告錯誤:find /some/path -print0 | grep -z . | ...
具體來說,
${PIPESTATUS[1]}
在 bash 中應該保持grep
.如果您
find
不支持-print0
,請使用 grep without-z
並希望文件名中的換行符不會導致問題:find ... | grep '^' | ...
在這種情況下,使用
^
代替.
可能更安全。如果輸出有連續的換行符,^
將通過它們,但.
不會。