2013-08-01 46 views
10

Tôi có một thư mục có nhiều thư mục con. Trong một số thư mục con này, tôi có các tệp có phần mở rộng là *.asc và một số có *.xdr.tar/gzip không bao gồm các tệp nhất định

Tôi muốn tạo tệp tarball/gzip SINGLE duy trì cấu trúc thư mục nhưng loại trừ tất cả các tệp có đuôi mở rộng *.xdr.

Tôi làm cách nào để thực hiện việc này?

Tôi đã làm một cái gì đó như find . -depth -name *.asc -exec gzip -r9 {} + nhưng điều này gzips mỗi *.asc tệp riêng lẻ mà không phải là những gì tôi muốn làm.

Trả lời

23

Bạn cần phải sử dụng --exclude tùy chọn:

tar -zc -f test.tar.gz --exclude='*.xdr' *

+0

Cú pháp cho nhiều tệp là gì? Tôi đã thử * .xdr, *. Pdf nhưng không thành công –

+2

Tôi đã làm điều đó bằng cách thêm --exclude một lần nữa. '--exclude = '*. pdf' --exclude = '*. mp4'' –

1

gzip sẽ luôn xử lý các tệp riêng lẻ. Nếu bạn muốn một kho lưu trữ kèm theo, bạn sẽ phải tar các tập tin đầu tiên và sau đó gzip kết quả, do đó bạn sẽ kết thúc với một tập tin .tar.gz hoặc .tgz cho ngắn.

Để kiểm soát tốt hơn những gì bạn đang làm, bạn có thể find các tệp đầu tiên sử dụng lệnh bạn đã đăng (với in dấu lệnh gzip), đặt chúng vào tệp và sử dụng tệp này (= filelist. txt) để uinstruct tar với những gì lưu trữ

tar -T filelist.txt -c -v -f myarchive.tar 
+0

Đó là tốt. Làm thế nào tôi có thể làm điều đó với tar? – user1654183

+0

Bạn có thể xem 'man tar' !? – user1146332

+0

Tôi đoán một cái gì đó như thế này sẽ làm việc: tar -cf src.tar --exclude = '*. Xdr' src – user1654183

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