Mam cento i mam około 1300 plików w folderze, z których każdy musi być osobno bzipowany. Jaki byłby najłatwiejszy sposób przekazania tego?Bz2 każdy plik w katalogu
Odpowiedz
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
od wewnątrz katalogu: bzip2 *
find PATH_TO_FOLDER -maxdepth 1 -type f -exec bzip2 -zk {} \;
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
Nie rozumiem, gdzie w swoim ostatnim poleceniu określiłeś użycie bzip2 –
z prawej, brakowało komendy "bzip2". naprawiony. – sagi
Co to jest "{} +"? – Lee