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.