Bạn có thể làm điều này, để cung cấp tar
danh sách tất cả các tệp bên trong protTests
ngoại trừ những tệp có liên kết tượng trưng:
find protTests -maxdepth 1 -mindepth 1 -not -type l -print0 |
tar --null --files-from - -cvf protTests.tar
Nhân tiện, lệnh hiện có của bạn:
tar -cvf protTests.tar protTests/*
sẽ không lưu trữ tất cả các tệp trong protTests
đó, nó sẽ chỉ lưu trữ những tên không bắt đầu bằng .
(những tên không bị ẩn). Các *
nhà điều hành glob bỏ qua các tập tin có tên bắt đầu bằng .
bởi thiết kế. Lệnh cũng có vấn đề là nếu protTests
có nhiều tệp (hơn nhiều nghìn), thì protTests/*
có thể mở rộng thành quá nhiều đối số để phù hợp với dòng lệnh.
Một lệnh đơn giản như thế này sẽ không có vấn đề nào trong số đó:
tar -cvf protTests.tar protTests
--files-from
, đây là một tùy chọn từ gtar, vì vậy, bạn đưa ra một lời khuyên như vậy, đề cập tốt hơn rằng đây là gtar cụ thể. Tìm không có chính-not
, đây là một GNUism không di động. Nói chung, đó là một ý tưởng tồi để sử dụng một cuộc gọi tìm riêng biệt. Điều này có thể gây ra vấn đề với các ký tự vui nhộn trong tên tệp và nó chắc chắn cho hiệu suất thấp vì cả tìm và tar đều cần quét hệ thống tệp. Những vấn đề này không áp dụng cho các chương trình như ngôi sao sử dụng libfind và do đó có mã tìm kiếm được kết hợp.