'Substituir' é um pouco vago, mas digamos que você queira atualizar um arquivo existente para que ele esteja em sincronia com as alterações do diretório do qual o arquivo foi originalmente criado. Use a opção u
e, em seguida, descubra o código mágico da terceira tabela nesta página link
Se eu criei o arquivo de um diretório foo como este:
7zr a foo.7z foo
Então eu posso adicionar arquivos, alterações ou exclusões ('sincronizar') a foo com isto:
7zr u foo.7z -up1q0r2y2 foo
O código mágico pode ser um pouco diferente dependendo das mudanças nas quais você está interessado (veja a primeira tabela na página).
Bastante misterioso.
Editar: Depois de algumas idas e vindas, parece que o OP requer que o arquivo seja preenchido a partir de STDIN e simplesmente queira sobrescrever o conteúdo do arquivo existente a cada vez. Os seguintes endereços que.
Você precisa especificar um "nome de arquivo" que será associado aos seus dados. Isso é feito colocando um nome após o sinalizador -si
(sem espaço entre):
<input> | 7zr a -sifoo foo.7z
Este comando funciona para a criação inicial do arquivo assim como para a atualização.
Histórico: conforme visto aqui link
If file_name is not specified, data will be stored without a name
Portanto, o 7zr não terá como saber que o conteúdo existente está associado à entrada subsequente. É por isso que você vê uma nova entrada de arquivo toda vez que você atualiza. Depois de dar um nome à sua entrada, o 7zr sabe que você está tentando atualizar o que já está lá.