GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hay alguna manera de editar archivos dentro de un archivo zip sin extraerlos explícitamente primero?

Vim admite la edición transparente de archivos dentro de archivos zip. Solo ejecuta:

vim file.zip

y se le mostrará una lista de archivos dentro del archivo zip. Elija el que desea editar, cambie lo que desee y salga con :x

Si vim responde con:

No se pueden hacer cambios, 'modificable' está desactivado

.. solo ejecuta :set modifiable o :set ma (fuente:https://stackoverflow.com/questions/5745506/vim-modifiable-is-off)


¿Sabe el nombre del archivo en el archivo antes de descomprimirlo? Podrías hacer una función para descomprimir a /tmp , edite y actualice el zip:

zipedit(){
    echo "Usage: zipedit archive.zip file.txt"
    unzip "$1" "$2" -d /tmp 
    vi /tmp/$2 && zip -j --update "$1"  "/tmp/$2" 
}

Como dice, el uso es:

zipedit myarchive.zip myfile.txt

Esto desempaqueta el archivo nombrado del archivo, lo guarda en /tmp , lo edita en vi luego lo vuelve a agregar al archivo, mientras "desecha" la ruta. Agregue a su .bash_profile, asumiendo bash ...

EDITAR: A continuación se muestra una versión que funciona con subcarpetas dentro del archivo... Tenga en cuenta que no use una barra antes del nombre de la carpeta (es decir, use myfolder/file.txt no /myfolder/file.txt ). Si edita un archivo que aún no existía en el archivo, lo creará por usted. Tampoco estoy seguro de si funcionará con la ruta absoluta al archivo zip. Mejor quédate con un pariente.

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"
}

Gracias por la pregunta. ¡Probablemente terminaré usando este también!

Otra edición:no probado, pero leí que vim y emacs ¿ambos editarán los archivos jar directamente?


Respuesta corta:NO.

Si es un envoltorio, eres llamar a estos comandos. De todos modos, lo mejor que se me ocurre es abrir el archivo usando file-roller , si está en un entorno X, eso podría funcionar con un simple doble clic, dependiendo de su configuración. Luego puede hacer doble clic en el archivo comprimido para abrirlo y luego editarlo:

$ file-roller b3.zip 

Cuando guarde su archivo editado, debería obtener este cuadro de diálogo:

También podría crear un script para esto, pero eso se complica si tiene archivos comprimidos que contienen varios archivos. Avísame si eso es lo que necesitas y tal vez pueda cocinar algo.


Linux
  1. Mover archivos en Linux sin mv

  2. Una manera fácil de ocultar archivos y directorios en Linux

  3. ¿Hay alguna forma de editar un marcador de nautilus (administrador de archivos) existente?

  4. ¿Cómo escribo archivos en un USB sin ser root?

  5. ¿Hay alguna manera de reanudar un scp interrumpido de un archivo?

Cómo editar archivos PDF en Linux de la manera más fácil posible

Steganography – Ocultar archivos dentro de imágenes en Linux

Consejos de Vim:edite archivos remotos con Vim en Linux

Cómo editar un archivo sin cambiar sus marcas de tiempo en Linux

Copie el contenido del archivo en el portapapeles sin mostrarlo

Cómo comprimir un archivo en Linux