unix cat多个文件 - 如果不存在则不会导致错误?

问题描述 投票:7回答:3

我试图捕获一堆文件,其中一些可能不存在。现在可以,如果其中一些不存在,但我不希望cat在这种情况下返回错误,如果可能的话。这是我的电话:

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

运行此命令时,将存在一堆匹配* _max.rpt.gz的文件,或者* _min.rpt.gz将存在。如果对方不存在,我不在乎,我只是想连接我能做到的。但我收到一条错误消息,阻止我的其余代码运行。

我能做什么?谢谢。

file unix concatenation
3个回答
15
投票

只需将stderr重定向到/ dev / null:

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

如果一个或多个文件不存在,那么cat将给出一个错误,该错误将转到/ dev / null并且您将获得所需的结果。


3
投票
grep -hs ^ file1 file2 ....

不像cat有零返回码。选项-h禁用文件名打印,选项-s禁用文件错误报告,^匹配所有行。


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

有点破解,但是shell也是如此:-P

© www.soinside.com 2019 - 2024. All rights reserved.