Pour bzip2 sur un Mac multicœur, vous pouvez émettre la commande suivante (lorsque vous êtes dans le dossier que vous souhaitez bzip)
find . -type f -print0 | xargs -0 -n1 -P14 /opt/local/bin/bzip2
Cela va compresser chaque fichier de manière récursive dans le dossier dans lequel se trouve votre terminal en utilisant simultanément 14 cœurs de processeur.
Vous pouvez ajuster le nombre de cœurs à utiliser en modifiant
-P14
Si vous ne savez pas où se trouve le binaire bzip2, vous pouvez émettre la commande suivante pour le découvrir
which bzip2
La sortie de cette commande est ce que vous pouvez remplacer
/opt/local/bin/bzip2
avec
Si tous les fichiers sont dans un seul répertoire alors :
bzip2 *
Est assez. Une approche plus robuste est :
find . -type f -exec bzip2 {} +
Ce qui compressera tous les fichiers du répertoire courant et de ses sous-répertoires, et fonctionnera même si vous avez des dizaines de milliers de fichiers (l'utilisation de * cassera s'il y a trop de fichiers dans le répertoire).
Si votre ordinateur possède plusieurs cœurs, vous pouvez l'améliorer davantage en compressant plusieurs fichiers à la fois. Par exemple, si vous souhaitez compresser 4 fichiers simultanément, utilisez :
find . -type f -print0 | xargs -0 -n1 -P4 bzip2
J'ai écrit le script ci-dessous à bzip2
fichiers dans un autre répertoire
#!/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
mon exemple de nom de fichier était comme
2001_xyz_30Sep2020_1400-30Sep2020_1500.csv.bz2
Je n'ai pas pu obtenir de commande directe, c'est pourquoi je l'ai fait. Cela fonctionne bien comme prévu.