Tôi có một danh bạ. Nó có khoảng 500K tệp .gz.
Làm cách nào để giải nén tất cả .gz trong thư mục đó và xóa các tệp .gz?
Tôi có một danh bạ. Nó có khoảng 500K tệp .gz.
Làm cách nào để giải nén tất cả .gz trong thư mục đó và xóa các tệp .gz?
Câu trả lời:
Điều này nên làm điều đó:
gunzip *.gz
find "$dir" -maxdepth 1 -name '*.gz' -print0 | xjobs -0 -l50 -v2 gunzip
để giới hạn các phiên bản ở 50 đối số mỗi đối số (và chạy chúng song song).
Rõ ràng là có nhiều cách để làm điều này.
# This will find files recursively (you can limit it by using some 'find' parameters.
# see the man pages
# Final backslash required for exec example to work
find . -name '*.gz' -exec gunzip '{}' \;
# This will do it only in the current directory
for a in *.gz; do gunzip $a; done
Tôi chắc rằng cũng có những cách khác, nhưng đây có lẽ là cách đơn giản nhất.
Và để xóa nó, chỉ cần thực hiện rm -rf *.gz
trong thư mục áp dụng
for foo in *.gz
do
tar xf "$foo"
rm "$foo"
done
Thử:
ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 tar xvfz
Vậy hãy thử đi:
ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 rm
Thao tác này sẽ xóa tất cả các tệp .tar.gz trong thư mục hiện tại và sau đó xóa tất cả các tệp .tar.gz. Nếu bạn muốn có lời giải thích, dấu "|" lấy stdout của lệnh trước nó và sử dụng nó làm stdin của lệnh sau nó. Sử dụng "man command " trong dấu ngoặc kép để tìm ra những lệnh và đối số đó làm gì. Hoặc, bạn có thể nghiên cứu trực tuyến.
.gz
tệp không nhất thiết phải là một kho lưu trữ. Trong trường hợp đó, bạn sẽ không có gì để xóa khi thực hiệngzip -d file.gz
.