Você pode tentar algo como: ( Atualizado para permitir espaços em branco nos nomes dos arquivos )
head -50 abc.txt | tr "\n" "head -50 abc.txt | tr "\n" "%pre%" | xargs -0 tar --null -no-recursion -uf abc.tar --directory=/tmp/temp
" | xargs -0 tar --null -no-recursion -uf abc.tar --directory=/tmp/temp
O comando head -50 fornecerá as primeiras 50 linhas do arquivo de lista. Esse resultado é canalizado em | para tr . Basicamente, tr executará uma operação de conversão, substituindo os caracteres de nova linha \n por um caractere nulo . O resultado é canalizado para xargs -0tar , que converterá todas essas linhas em argumentos para o comando -0 .
Os argumentos xargs para %code% separam os argumentos com base em caracteres nulos em vez de espaços em branco. Isso fará com que o comando funcione mesmo que seus nomes de arquivos tenham espaços.
Obrigado a Jordanm por seu comentário.