Tôi đang chạy các centos và tôi có khoảng 1.300 tệp trong một thư mục mà mỗi tệp cần được bzipped riêng lẻ. Điều gì sẽ là cách dễ nhất để bàn giao điều này?Bz2 mỗi tệp trong một thư mục
Trả lời
Nếu tất cả các file nằm trong một thư mục duy nhất thì:
bzip2 *
là đủ. Một cách tiếp cận mạnh mẽ hơn là:
find . -type f -exec bzip2 {} +
Mà sẽ nén tất cả các tập tin trong thư mục hiện hành và thư mục con của nó, và sẽ làm việc ngay cả khi bạn có hàng chục ngàn file (sử dụng * sẽ phá vỡ nếu có quá nhiều tệp trong thư mục).
Nếu máy tính của bạn có nhiều lõi, bạn có thể cải thiện thêm tính năng này bằng cách nén nhiều tệp cùng một lúc. Ví dụ, nếu bạn muốn để nén 4 file đồng thời, sử dụng:
find . -type f -print0 | xargs -0 -n1 -P4 bzip2
Từ bên trong thư mục: bzip2 *
find PATH_TO_FOLDER -maxdepth 1 -type f -exec bzip2 -zk {} \;
Để bzip2 trên đa lõi Mac, bạn có thể dùng lệnh sau (khi bạn đang ở trong thư mục mà bạn muốn bzip)
find . -type f -print0 | xargs -0 -n1 -P14 /opt/local/bin/bzip2
Điều này sẽ bzip mỗi tập tin đệ quy trong thiết bị đầu cuối của bạn đang sử dụng đồng thời 14 lõi CPU.
Bạn có thể điều chỉnh bao nhiêu lõi để sử dụng bằng cách chỉnh sửa
-P14
Nếu bạn không biết nơi nhị phân bzip2 là, bạn có thể dùng lệnh sau để con số nó ra
which bzip2
Đầu ra của lệnh đó là những gì bạn có thể thay thế
/opt/local/bin/bzip2
với
Tôi không hiểu vị trí trong lệnh cuối cùng của bạn mà bạn chỉ định sử dụng bzip2 –
bên phải, nó thiếu lệnh "bzip2". đã sửa. – sagi
Ý nghĩa của '{} +' là gì? – Lee