Para expandir o que @cuonglm disse, tar
, por padrão, opera recursivamente. Se você passar um nome de diretório, ele arquivará o conteúdo desse diretório.
Você pode modificar seu comando find
para retornar apenas os nomes dos arquivos, não dos diretórios ...
find test/ -type f -not -path "*1*" -not -path "*2*" |
tar -czvf test.tar.gz --files-from -
Você pode usar o sinal --no-recursion
para tar
:
find test/ -not -path "*1*" -not -path "*2*" |
tar -czvf test.tar.gz --no-recursion --files-from -
O que resulta em:
test/
test/3/
O --no-recursion
flag é específico para o GNU tar. Se você estiver usando outra coisa, consulte a man page apropriada para ver se há um recurso semelhante disponível.
Observe que o comando find
excluirá arquivos que contêm 1
ou 2
no caminho, bem como nos diretórios.