Đơn giản hơn bạn nghĩ:
$ tar cf small-archive.tar /big/tree --exclude-from <(find /big/tree -size +3M)
Trên một ghi chú bán liên quan (liên quan đến tuyên bố của bạn mà bạn không thể sử dụng find) để có được danh sách tất cả các tệp (bao gồm các thư mục) trong một đường dẫn trừ các tệp lớn hơn 3MiB, hãy sử dụng:
$ find . -size -3M -o -type d
Sau đó bạn có thể làm:
$ tar cf small-archive.tar --no-recursion --files-from <(find /big/tree -size -3M -o -type d)
Nhưng tôi thích cái đầu tiên vì nó đơn giản hơn, thể hiện rõ ràng những gì bạn muốn và sẽ dẫn đến ít bất ngờ hơn.
find
lại?