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

标签 linux shell

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

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

问题在于输出 block 的格式不可读,其中包含符号和随机字符。 当我单独为每个文件执行此操作时,它会输出完美的 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 文件分块。

解决方案

以下内容未经测试,因为我没有您的源文件。但是,稍作调整后它应该适合您。

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

关于Linux Shell 脚本解压缩和分割文件输出不可读的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32788444/

相关文章:

linux - 在 Linux 中生成的零字节 .lis 文件

php - 我可以用 vagrant 和 linux 创建一个虚拟主机吗?

c - wait(NULL) 函数不起作用,父进程总是在子进程之前运行

linux - 私有(private) Docker 注册表错误

linux - 存储 Smarty 模板缓存文件的最佳位置在哪里?

linux - 我如何知道我是否在运行嵌套 shell?

linux - 在 oracle 过程中运行 shell 脚本

shell脚本错误记录

linux - 如何使用 sed 提取子字符串

java - 如何向现有的 bash 进程发出多个命令?