【问题标题】:Linux Shell Script to unzip and split file outputs unreadable files用于解压缩和拆分文件的 Linux Shell 脚本输出不可读的文件
【发布时间】:2015-09-25 18:25:24
【问题描述】:

我有一个 zip 文件夹,其中包含多个相同格式的文件。每个文件大小约为 50 mb。我需要将每个文件拆分为多个块(例如每个拆分的输出文件 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

【问题讨论】:

  • 您的 zip 文件的内容是什么?您是否在拆分文件中得到任何纯文本(或其他)输出?
  • 这会将input.zip每个文件的整个内容流式传输到管道,然后拆分将对进行操作总内容。这就是你想要的吗?
  • $z 的值为input.zip,此循环将运行 1 次。那是你要的吗?此外,您需要告诉split 从标准输入中读取,只需一个普通的- 而不是$z。您的split 手册页版本可能会提到这一点(我的确实如此)。而且我认为您不能像在此处所做的那样指定 output_dir。在开始添加功能之前,让它在当前目录中工作;-) 祝你好运。

标签: linux shell


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多