linux Bz2目录中的每个文件

ecfsfe2w  于 2023-10-16  发布在  Linux
关注(0)|答案(5)|浏览(121)

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

7lrncoxx

7lrncoxx1#

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

ujv3wf0j

ujv3wf0j2#

我已经写了下面的脚本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

我无法得到任何直接的命令,所以做了这个。这正如预期的那样工作得很好。

uqdfh47h

uqdfh47h3#

从目录内部:bzip2 *

2j4z5cfb

2j4z5cfb4#

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

798qvoo85#

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

bzip2 *

一个更可靠的方法是:

find . -type f -exec bzip2 {} +

它将压缩当前目录及其子目录中的每个文件,即使你有成千上万的文件也能工作(如果目录中有太多的文件,使用 * 将中断)。
如果您的计算机有多个核心,那么您可以通过一次压缩多个文件来进一步改善这一点。例如,如果你想同时压缩4个文件,用途:

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

如果你得到一个permission denied错误,在xargs之前再放一个sudo:

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

相关问题