Use -print0 com find para gerar nomes de arquivos delimitados por nulo e canalize para tar usando -T - --null para ler nomes de arquivos delimitados por nulos de stdin.
find ... -print0 | tar ... -T - --null
digamos que eu gostaria de encontrar todos os arquivos com sufixo .wzd sob o diretório atual e arquivar todos os arquivos fundados de cada vez, como posso fazê-lo?
o seguinte não funciona, a propósito
find . -name "*.wzd" 2>/dev/null -exec tar -cvf wzd.tar {} \;
Use -print0 com find para gerar nomes de arquivos delimitados por nulo e canalize para tar usando -T - --null para ler nomes de arquivos delimitados por nulos de stdin.
find ... -print0 | tar ... -T - --null
os backticks funcionariam também:
tar -cvf wzd.tar 'find . name "*.wzd" -printf "%f "'
-exec command {} +
Essa variante da ação -exec executa o comando especificado nos arquivos selecionados, mas a linha de comando é criada anexando cada nome de arquivo selecionado no final; o número total de invocações do comando será muito menor que o número de arquivos correspondentes. A linha de comando é construída da mesma maneira que xargs constrói suas linhas de comando. Apenas uma instância de '{}' é permitida no comando. O comando é executado no diretório inicial.