2012-10-10 32 views
3

我試圖貓一堆文件,其中一些可能不存在。現在沒關係,如果它們中的一些不存在,但我不希望貓在這種情況下返回錯誤,如果可能的話。這裏是我的電話:unix cat多個文件 - 如果不存在,不會導致錯誤?

zcat *_max.rpt.gz *_min.rpt.gz | gzip > temp.rpt.gz 

當運行此命令時,無論是一堆匹配* _max.rpt.gz會存在的文件,或* _min.rpt.gz會存在。如果另一個不存在,我不在乎,我只想連接我所能做的。但是,我收到一條錯誤消息,它會阻止我的其他代碼運行。

我能做什麼?謝謝。

回答

7

只是重定向標準錯誤到/ dev/null的:

cat file1 file2 .... 2>/dev/null 

如果不存在一個或多個文件,然後貓會給出一個錯誤,將去到/ dev/null的,你會得到期望的結果。

+0

我的人......我知道使用的/ dev/null的東西的人。編輯 - 不確定將2>/dev/null放在我的代碼行中 - 在管道之後還是之前? – JDS

+0

@YoungMoney在管道之前:'zcat * _max.rpt.gz * _min.rpt.gz 2>/dev/null | gzip> temp.rpt.gz' –

1
zcat `ls *.rpt.gz | grep -E '_(max|min)\.rpt\.gz$'` | gzip > temp.rpt.gz 

黑客攻擊的一位,但那麼是shell :-P

+0

我正在通過perl「system」調用完成此操作... – JDS

相關問題