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 -0
tar
, 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.