2015-02-24 59 views
1

我在AIX上有一個命令,用於查找包含短語並且年齡大於特定年齡的文件。但是我的報告充滿了拒絕錯誤的權限。我希望find只搜索它有權限的文件。只搜索具有權限的目錄-find(Bash 4.2)

我命令適用於Linux,在這種情況下,我無法使用可讀但是工作

find /home/ ! -readable -prune -name 'core.20*' -mtime +7 -print 

find /home/ -name 'core.20*' -mtime +7 -print 2>/dev/null 

工作得很好,但這仍然嘗試搜索耗費時間的目錄。

回答

0

只要用你的

find /home/ -name 'core.20*' -mtime +7 -print 2>/dev/null 

如果你想跳過目錄的未經許可,您的腳本必須以某種方式向Unix的許可。這正是發現正在做的事:當頂層關閉時,沒有時間花在樹下。唯一的代價是stderr,這就是你重定向的東西。
當你要優化這個日常使用,你可能想和文件的文件以一次每1-6天的crontab過了一天沒有改變,並使用日誌作爲輸入日常claing。這個解決方案不會有太大的幫助,而且很髒。只要堅持你的2>/dev/null

0

一個非常簡單的修復,如果你的作品,會用grep過濾掉錯誤,是這樣的:

find /home/ -name 'core.20*' -mtime +7 -print 2>/dev/null | grep -v 'Permission denied' 

這將隱藏包含短語任何結果「權限被拒絕」(區分大小寫)。

HTH!

+0

感謝您的答案,我已成功隱藏結果。但是,查找仍然嘗試搜索目錄。這會花費更大系統的時間 – Grushton94 2015-02-24 11:29:12

+0

'grep -v'沒有做任何事情;錯誤消息已被'2>/dev/null'丟棄。 – tripleee 2015-02-24 12:09:17

+0

在這種情況下,我誤解了你的問題。我認爲你的問題是「但是我的報告充滿了拒絕錯誤的權限」 – Matt 2015-02-24 12:15:16