如何通过目录生成的文件列表将多个.sdf.gz文件合并为单个.gz文件
解决方案
方法1:用xargs实现(兼容性最好,推荐)
直接执行以下命令即可:xargs cat < list > all.sdf.gz
xargs会自动读取list文件里每行的文件名,批量作为参数传递给cat命令,最终将所有文件内容合并输出到all.sdf.gz。这种方式就算后续你的文件名带空格,只要list里每行存一个完整文件名,也能正常运行。
方法2:用shell命令替换实现
你也可以用以下更简洁的写法:cat $(< list) > all.sdf.gz
shell会直接读取list文件的所有内容,按换行/空格分割成参数传给cat,适合你当前文件名无特殊字符的场景。
注意:gzip格式本身支持多个压缩流直接拼接,所以你直接合并.gz文件的操作是合法的,合并得到的all.sdf.gz可以正常解压使用,不需要额外转码。如果你的list文件里存在多余空行或者非目标文件的文件名,建议先清理后再执行合并命令,避免引入无关内容。
如果你本来就是要合并当前目录下所有.sdf.gz后缀的文件,完全不需要提前生成list文件,直接执行cat *.sdf.gz > all.sdf.gz即可实现相同效果。
内容的提问来源于stack exchange,提问作者ray
相关产品推荐
相关产品推荐

