Como uma solução robusta, use find
para separar nomes de arquivos por um caractere nulo e, em seguida, canalize diretamente para tar
, que liga entrada delimitada por nulo :
find . -name '*.csv' -maxdepth 1 -print0 |
tar -czf archive.tgz --null -T -
Isso agora vai lidar com nomes de arquivos todos corretamente e também não é limitado pelo número de arquivos.
Usar ls
para gerar uma lista de nomes de arquivos a serem analisados por outro programa é um antipadrão comum que deve ser evitado sempre que possível. find
pode gerar saída delimitada por nulo ( -print0
) que a maioria dos utilitários pode ler ou analisar mais. Como o caractere nulo é o único caractere que não pode aparecer em um nome de arquivo (e o /
, obviamente), você sempre estará seguro com isso.