Como o camh aponta, o comando anterior tinha um pequeno problema, dado que muitos nomes de arquivo, ele seria executado mais de uma vez, com invocações posteriores limpando silenciosamente as execuções anteriores. Como não estamos compactando também, podemos acrescentar em vez de substituir:
find mydir -maxdepth 1 -type f -print0 | xargs -0 tar Avf mydir.tar
find mydir -maxdepth 1 -type f -exec tar Avf mydir.tar {} +
A resposta da Iocnarz de usar as opções tar
--null
e -T
também funciona. Se você tem cpio
instalado, a resposta da camh usando também está bem. E se você tiver zsh
e não se importar em usá-lo para um comando, a resposta de Gilles usando um zsh glob ( *(.)
) parece o mais simples.
A chave era a opção -maxdepth
.
Resposta final, lidando adequadamente com os espaços:
find mydir -maxdepth 1 -type f -print0 | xargs -0 tar cvf mydir.tar
Isso também deve funcionar:
find mydir -maxdepth 1 -type f -exec tar cvf mydir.tar {} +