2011-07-27 15 views

Odpowiedz

16

Jeżeli wszystkie pliki w jednym katalogu, następnie:

bzip2 * 

wystarczy. Bardziej zdecydowane podejście jest:

find . -type f -exec bzip2 {} + 

Która będzie kompresji wszystkich plików w bieżącym katalogu i jego podkatalogów, i będzie działać, nawet jeśli masz dziesiątki tysięcy plików (za pomocą * pęknie jeśli istnieje zbyt wiele pliki w katalogu).

Jeśli komputer ma wiele rdzeni, można to poprawić, kompresując wiele plików naraz. Na przykład, jeśli chcesz skompresować 4 plików jednocześnie, należy:

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

Nie rozumiem, gdzie w swoim ostatnim poleceniu określiłeś użycie bzip2 –

+0

z prawej, brakowało komendy "bzip2". naprawiony. – sagi

+0

Co to jest "{} +"? – Lee

0

od wewnątrz katalogu: bzip2 *

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

Aby bzip2 na wielordzeniowych Mac, można wydać następujące polecenia (gdy jesteś wewnątrz folderu chcesz bzip)

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

będzie bzip każdy plik rekurencyjnie w folderze terminal jest w użyciu 14 rdzeni procesora jednocześnie.

można regulować ile rdzeni korzystać edytując

-P14 

Jeśli nie wiesz, gdzie binarne bzip2 jest, można wydać następujące polecenie, aby zrozumieć to

which bzip2 

Dane wyjściowe tego polecenia można zastąpić:

/opt/local/bin/bzip2 

z