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

JDS*_*JDS 8 unix file concatenation

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

zcat *_max.rpt.gz *_min.rpt.gz | gzip > temp.rpt.gz
Run Code Online (Sandbox Code Playgroud)

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

我能做什么?谢谢.

P.P*_*.P. 16

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

cat file1 file2 .... 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

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

  • 如果找不到其中一个输入文件,`cat`将返回**非零退出代码**. (4认同)

小智 12

[ -f file.txt ] && cat file.txt


小智 8

grep -hs ^ file1 file2 ....
Run Code Online (Sandbox Code Playgroud)

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

  • 在 bash 4.2 上,我收到 `grep -hs ^missing_file` 的错误代码 2 (3认同)

Dus*_*olf 5

您可以附加|| True到命令中以使退出代码静音。