2012-11-05 52 views

Trả lời

40

Lệnh bạn sử dụng sẽ chạy zip trên mỗi tập tin riêng biệt, hãy thử này:

find . -name <name> -print | zip name.zip [email protected] 

Các [email protected] nói zip để đọc các tập tin từ đầu vào, từ người đàn ông zip(1):

- @ tập tin danh sách. Nếu danh sách tệp được chỉ định là - @ [Không phải trên MacOS], zip sẽ lấy danh sách tệp nhập từ đầu vào chuẩn thay vì từ dòng lệnh.

+0

bạn có thể giải thích điều này không - biểu tượng @? – LOGAN

+0

@ LOGAN có, hãy kiểm tra cập nhật – iabdalkader

+0

@LOGAN nếu câu trả lời cho câu hỏi của bạn, sau đó vui lòng chấp nhận câu trả lời. – iabdalkader

12

Bạn cũng có thể cung cấp tên như là kết quả của lệnh find của bạn:

zip name.zip `find . -name <name> -print` 

Đây là một tính năng của vỏ bạn đang sử dụng. Bạn có thể tìm kiếm "backticks" để xác định cách trình bao xử lý việc này.

+0

hoạt động chính xác như tôi mong đợi. – ferdynator

6

phản ứng của bạn là chặt chẽ, nhưng điều này có thể làm việc tốt hơn:

find -regex 'regex' -exec zip filname.zip {} + 

Điều đó sẽ đặt tất cả các tập tin tương ứng trong một file zip gọi filename.zip. Bạn không cần phải lo lắng về các ký tự đặc biệt trong tên tệp (như ngắt dòng), bạn sẽ làm gì nếu bạn đã cho kết quả.

+0

Công việc tuyệt vời với dấu cộng. Tôi luôn luôn quên 'tìm thấy' có thể làm điều đó. – jheddings

+0

làm gì? với dấu + – aliopi

+2

@aliopi + có nghĩa là thay thế {} bằng tất cả các tên tập tin, thay vì thực hiện lệnh một lần cho mỗi tập tin. –

Các vấn đề liên quan