如何使用Linux命令gunzip -c original.zip | split -l 10 - 'smaller-part-' --additional-suffix='.txt' --filter='gzip >> $FILE.zip'
将zip文件拆分为多个较小的zip文件?
我有一个大型zip存档,其中包含一个包含数百万行我需要处理的文件。幸运的是,处理可以并行完成,因此我想将zip拆分为N个部分,以便为在多台机器上运行的处理器提供服务。
我目前正在使用此命令将单个大型zip存档拆分为10个较小的zip存档:
split: with FILE=smaller-part-aa.txt, exit 1 from command: gzip >> $FILE.zip
在运行Ubuntu 16的本地主机上运行完美。但是,在运行Ubuntu 16的另一台服务器上,此命令神秘地失败并显示错误:
--verbose
为什么它会以错误代码退出?即使我指定buildbot
,也不提供进一步的解释。
编辑:问题似乎与运行命令的用户有关。在抛出错误的服务器上,我将其作为sudo -u buildbot bash
启动的shell中的自定义{{1}}用户运行。但是,所有文件和目录都归该用户所有。当我以默认的ubuntu用户身份运行该命令时,它会正确运行。为什么在以自定义用户身份运行时会出现gunzip / split / gzip错误?
答案 0 :(得分:0)
问题是我的用户为其/bin/false
环境变量设置了SHELL
,导致分割的--filter
参数失败,因为它需要一个有效的shell来执行过滤命令。使用vipw
将其更改为/bin/bash
修复它。