Bz2 каждый файл в каталоге - PullRequest
7 голосов
/ 28 июля 2011

Я использую Centos, и у меня есть около 1300 файлов в папке, каждый из которых должен быть разархивирован по отдельности.Какой самый простой способ передать это?

Ответы [ 4 ]

18 голосов
/ 28 июля 2011

Если все файлы находятся в одном каталоге, то:

bzip2 *

Достаточно.Более надежный подход:

find . -type f -exec bzip2 {} +

, который сжимает каждый файл в текущем каталоге и его подкаталогах и будет работать, даже если у вас есть десятки тысяч файлов (использование * прервет работу, еслислишком много файлов в каталоге).

Если ваш компьютер имеет несколько ядер, вы можете улучшить это, сжимая несколько файлов одновременно.Например, если вы хотите сжать 4 файла одновременно, используйте:

find . -type f -print0 | xargs -0 -n1 -P4 bzip2
2 голосов
/ 13 января 2013

Чтобы bzip2 на многоядерном Mac, вы можете выполнить следующую команду (когда вы находитесь внутри папки, которую вы хотите bzip)

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

Это будет рекурсивно bzip каждый файл внутри папки вашегоТерминал использует 14 процессорных ядер одновременно.

Вы можете настроить количество используемых ядер, отредактировав

 -P14

Если вы не знаете, где находится двоичный файл bzip2, вы можете выполнить следующую команду, чтобы выяснить это

which bzip2

Вывод этой команды можно заменить на

/opt/local/bin/bzip2

на

0 голосов
/ 28 июля 2011
find PATH_TO_FOLDER -maxdepth 1 -type f -exec bzip2 -zk {} \;
0 голосов
/ 28 июля 2011

Из каталога: bzip2 *

...