Làm cách nào để gunzip vào một thư mục đích khác?


80

Làm cách nào để gunzip vào thư mục đích khác với thư mục hiện tại?

Điều này đã không làm việc:

gunzip *.gz /putthemhere/

Câu trả lời:


104

Yêu cầu gunzipxuất ra đầu ra tiêu chuẩn và chuyển hướng đến một tệp trong thư mục đó:

gunzip -c file.gz > /THERE/file

zcatlà một phím tắt cho gunzip -c.

Nếu bạn muốn gunzip nhiều tệp lặp trên tất cả các tệp:

for f in *.gz; do
  STEM=$(basename "${f}" .gz)
  gunzip -c "${f}" > /THERE/"${STEM}"
done

(ở đây basenameđược sử dụng để có được một phần của tên tệp mà không cần phần mở rộng)


3
Tạo tệp, nhưng không bảo vệ quyền sở hữu tệp, quyền, v.v ... Điều đó có thể tốt hoặc xấu tùy thuộc vào tình huống chính xác của bạn.
Chris Johnson

2

Nếu bạn cần trích xuất một tệp duy nhất ghi vào thư mục sở hữu gốc, thì hãy sử dụng sudo dd:

zcat filename.conf.gz | sudo tee /etc/filename.conf >/dev/null

Nếu tệp đến từ một nguồn từ xa (ví dụ: ssh, curl https, v.v.), bạn có thể làm như thế này:

ssh remoteserver cat filename.conf.gz | zcat | sudo tee /etc/filename.conf >/dev/null

(Lưu ý rằng các ví dụ này chỉ hoạt động cho một tệp duy nhất , không giống như ví dụ * .gz, đó là tất cả các tệp được nén trong thư mục.)


Đối với văn bản với các đặc quyền gốc, sudo tee $filename >/dev/nulllà một thành ngữ hơn một chút so với sử dụng dd.
dcoles 17/11/18

1

Bạn có thể thử với> để chuyển hướng kết quả đến nơi bạn muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.