Antes de mais nada, você deve perceber que um arquivo .tar normalmente não é compactado (é mais provável que ele tenha uma extensão .tar.gz
ou .tar.xz
se for).
E o seu tar -xvf xyz.tar
extrai os arquivos e lista os nomes, o sed funciona na lista de nomes de arquivos, nem mesmo o conteúdo do arquivo.
Se você tiver exatamente as mesmas substituições de tamanho que os originais, então você poderia teoricamente (como arquivos tar não ter checksum) substituir as strings no .tar
.
No entanto, é melhor primeiro extrair todos os arquivos em um diretório temporário e, em seguida, percorrer a árvore usando
find . -name "*.sh" -print0 | xargs -0 sed -i -e 's/Hollywood/Oscar/'
e depois recriar o arquivo tar deste diretório temporário.
Isso pressupõe que seu sed
suporta -i
(substituindo o arquivo de entrada pelo conteúdo editado), se você não fizer um pequeno script que chame sed
e grave a saída em um arquivo temporário, copia o arquivo de volta quando sed
é concluído.