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.