Tôi tập hợp một tập lệnh để thực hiện một số thao tác tập tin cho tôi. Tôi đang sử dụng toán tử thẻ hoang dã *
để áp dụng các chức năng cho tất cả các loại tệp, nhưng có một điều tôi không nhận được. Tôi có thể unzip
tất cả các tệp trong một thư mục như thế này
unzip "*".zip
Tuy nhiên, để xóa tất cả các tệp zip sau đó, tôi cần phải làm
rm *.zip
Đó là, nó không muốn các dấu ngoặc kép. Mặt khác, phần giải nén không hoạt động nếu tôi chỉ cho nó * (đưa ra cảnh báo rằng "các tệp không khớp").
Tại sao điều này lại khác? Đối với tôi, điều này có vẻ giống như hoạt động chính xác. Hay tôi đang sử dụng thẻ hoang dã không chính xác?
Giới thiệu về thẻ hoang dã trong Unix không thực sự đi sâu vào vấn đề này và tôi không thể tìm thấy bất cứ điều gì trong tài liệu rm
hoặc zip
tài liệu.
Tôi đang sử dụng thiết bị đầu cuối trên máy Mac (Yosemite).
unzip
áp dụng toàn cầu cho nội dung của một kho lưu trữ; bạn không thể lấy chúng từ bash bằng ký tự đại diện. (Bạn sẽ cần `` `cho f in unzip -l archive.zip
; do ... xong`)
unzip
việc chấp nhận các khối lượng để khớp trong một tệp zip duy nhất. Nhưng điều này là khác nhau; Tôi thực sự đã thử unzip '*.zip'
trong một thư mục có nhiều tệp zip và nó trích xuất tất cả các tệp từ tất cả các khóa. Như tôi đã nói, siêu kỳ lạ. tar
không có bất kỳ chế độ hoạt động như thế.
unzip
có thể làm điều này mà không cófor f in *.zip;do...done
vòng lặp vỏ bình thường . Thật là một giao diện người dùng dòng lệnh không giống như unix.