Você sabe o nome do arquivo no arquivo antes de descompactá-lo? Você poderia fazer uma função para descompactar em /tmp
, editar e atualizar o zip:
zipedit(){
echo "Usage: zipedit archive.zip file.txt"
unzip "$1" "$2" -d /tmp
vi /tmp/$2 && zip -j --update "$1" "/tmp/$2"
}
Como diz, o uso é:
zipedit myarchive.zip myfile.txt
Isso descompacta o arquivo nomeado do arquivo, salva-o em /tmp
, edita-o em vi
e depois o adiciona de volta ao arquivo, enquanto "conserta" o caminho. Adicione ao seu .bash_profile, assumindo bash
...
EDIT: Abaixo está uma versão que trabalha com subpastas dentro do arquivo ... Nota, não use uma barra antes do nome da pasta (ou seja, use myfolder/file.txt
not /myfolder/file.txt
) . Se você editar um arquivo que ainda não existia no arquivo, ele será criado para você. Também não tenho certeza se ele funcionará com o caminho absoluto para o arquivo zip. Melhor ficar com parente.
zipedit(){
echo "Usage: zipedit archive.zip folder/file.txt"
curdir=$(pwd)
unzip "$1" "$2" -d /tmp
cd /tmp
vi "$2" && zip --update "$curdir/$1" "$2"
# remove this line to just keep overwriting files in /tmp
rm -f "$2" # or remove -f if you want to confirm
cd "$curdir"
}
Obrigado pela pergunta. Eu provavelmente vou acabar usando este também!
Outra edição: não testada, mas eu li que vim
e emacs
irão editar os arquivos jar diretamente?