Bz2目录中的每个文件

时间:2011-07-27 21:38:12

标签: linux unix compression centos bzip2

我正在运行centos,我在一个文件夹中有大约1,300个文件,每个文件都需要单独进行压缩。最简单的方法是什么?

5 个答案:

答案 0 :(得分:18)

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

bzip2 *

够了。一种更强大的方法是:

find . -type f -exec bzip2 {} +

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

如果您的计算机有多个内核,则可以通过一次压缩多个文件来进一步改进。例如,如果要同时压缩4个文件,请使用:

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

答案 1 :(得分:2)

要在多核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

答案 2 :(得分: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

我无法获得任何直接命令,因此做到了这一点。一切正常。

答案 3 :(得分:0)

从目录中:bzip2 *

答案 4 :(得分:0)

find PATH_TO_FOLDER -maxdepth 1 -type f -exec bzip2 -zk {} \;