Bz2 目录中的每个文件

问题描述 投票:0回答:5

我运行的是 centos,文件夹中有大约 1,300 个文件,每个文件都需要单独压缩。处理这个问题最简单的方法是什么?

linux unix compression centos bzip2
5个回答
25
投票

如果所有文件都在一个目录中,则:

bzip2 *

够了。更稳健的方法是:

find . -type f -exec bzip2 {} +

这将压缩当前目录及其子目录中的每个文件,即使您有数万个文件也可以工作(如果目录中文件太多,使用 * 会中断)。

如果您的计算机有多个核心,那么您可以通过一次压缩多个文件来进一步改进这一点。例如,如果您想同时压缩 4 个文件,请使用:

find . -type f -print0 | xargs -0 -n1 -P4 bzip2

如果出现权限被拒绝错误,请在 xargs 之前添加另一个 sudo:

find . -type f -print0 | sudo xargs -0 -n1 -P4 bzip2

3
投票

要在多核 Mac 上进行 bzip2,您可以发出以下命令(当您位于要进行 bzip 的文件夹中时)

find . -type f -print0 | xargs -0 -n1 -P14 /opt/local/bin/bzip2

这将同时使用 14 个 CPU 核心递归地压缩终端所在文件夹内的每个文件。

您可以通过编辑来调整要使用的核心数

 -P14

如果您不知道 bzip2 二进制文件在哪里,可以发出以下命令来找出它

which bzip2

该命令的输出是您可以替换的内容

/opt/local/bin/bzip2


1
投票

我已将以下脚本写入到

bzip2
文件到另一个目录

#!/bin/bash
filedir=/home/vikrant_singh_rana/test/*

for filename in $filedir; do
name=$(basename "$filename" | sed -e 's/\.[^.]*$//')
bzip2 -dc $filename > /home/vikrant_singh_rana/unzipfiles/$name
done

我的示例文件名就像

2001_xyz_30Sep2020_1400-30Sep2020_1500.csv.bz2

我无法得到任何直接命令,因此做了这个。正如预期,这工作正常。


0
投票

从目录内部:

bzip2 *


0
投票
find PATH_TO_FOLDER -maxdepth 1 -type f -exec bzip2 -zk {} \;
© www.soinside.com 2019 - 2024. All rights reserved.