我正在运行 centos,我在一个文件夹中有大约 1,300 个文件,每个文件都需要单独进行 bzip 压缩。处理这个最简单的方法是什么?
问问题
19172 次
5 回答
24
如果所有文件都在一个目录中,则:
bzip2 *
足够的。更稳健的方法是:
find . -type f -exec bzip2 {} +
它将压缩当前目录及其子目录中的每个文件,即使您有数万个文件也可以工作(如果目录中的文件太多,使用 * 会中断)。
如果您的计算机有多个内核,那么您可以通过一次压缩多个文件来进一步改进这一点。例如,如果您想同时压缩 4 个文件,请使用:
find . -type f -print0 | xargs -0 -n1 -P4 bzip2
于 2011-07-27T21:40:29.677 回答
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
和
于 2013-01-13T06:52:44.530 回答
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
我无法获得任何直接命令,因此做了这个。这按预期工作正常。
于 2020-10-15T17:27:43.783 回答
0
从目录内部:bzip2 *
于 2011-07-27T21:40:40.673 回答
0
find PATH_TO_FOLDER -maxdepth 1 -type f -exec bzip2 -zk {} \;
于 2011-07-27T21:41:09.270 回答