Linux Shell脚本解压缩和拆分文件输出不可读的文件

时间:2015-09-25 18:25:24

标签: linux shell

我有一个zip文件夹,其中包含多个格式相同的文件。每个文件大小约为50 MB。我需要将每个文件拆分成多个块(比如每个spllited输出文件1000行)。

我编写了一个shell脚本,该脚本解压缩文件夹并将分割文件输出保存在目录中。

问题是输出块是不可读的格式,包含符号和随机字符。 当我单独为每个文件执行此操作时,它会输出完美的txt拆分文件。但是整个zip文件夹都没有发生。

任何人都知道如何以txt格式获取这些文件。 这是我的剧本。

for z in input.zip ; do
    if unzip -p "$z" | split -l 1000 $z output_dir ; then
    echo "$z"
fi
done

1 个答案:

答案 0 :(得分:1)

问题

您需要先解压缩文件。否则,您只是将原始二进制ZIP文件分块。

解决方案

以下是未经测试的,因为我没有您的源文件。但是,它应该适合你一点调整。

unzip -d /tmp/unzipped input.zip
mkdir /tmp/split_files

for file in /tmp/unzipped/*txt do;
    split -l 1000 "$file" "/tmp/split_files/$(basename "$file" .txt)"
done