2

Я новичок в Linux и должен был сделать что-то вроде этого с командой zip:

Моя структура папок внутри zip-файла abc.zip:

-- currentdir
  -- onestepdeep
     -- abc.zip
       -- folder1
         -- textfile.txt
       -- folder2
  -- seconddir
    -- folder3 
      -- textfile.txt

Мне нужно скопировать файл textfile.txt из seconddir/folder3 в folder1 внутри abc.zip

Я мог бы переместить textfile.txt в abc.zip со следующими результатами:

  1. Он переместится в abc.zip как folder3/textfile.txt (иерархия сохранена)
  2. Также использовался ключ -j (справка сказала, что он испортил информацию о пути, но он это сделал) - он будет перемещаться только в abc.zip и находиться на том же уровне, что и folder1 и folder2 вместо замены textfile.txt внутри abc.zip/folder1

Мой вопрос - я хочу заменить abc.zip/folder1/textfile.txt на тот, что находится внутри seconddir/folder3/textfile.txt .

Как мне добиться этого через интерфейс командной строки?

3 ответа3

1

Я всегда катаюсь с дегтем сам ...

tar -cjf destination_archive_file.tar.bz2 /path/to/directory/to/archive

Это даст вам файл 'destination_archive_file.tar.bz2', в котором будет храниться все содержимое каталога /path /to /directory /to /archive.

Затем, чтобы извлечь, вы просто используете:

tar -xjvf destination_archive_file.tar.bz2

Во всяком случае, я знаю, что вы явно просили zip, а не tar. Я пробовал zip несколько раз и нашел, что это немного нелогично. Никогда не удосужился понять это, так как я просто использовал tar и продолжил. Если вам нужно извлечь tar в Windows, 7-zip или winrar должны помочь. Я уверен, что OSX поддерживает его изначально.

1

Я также использую tar, но если вам нужен zip, то:

zip -b path/to/create/in zipfile.zip textfile.txt

1

Может быть, установить fuse-zip , который является очень удобным инструментом. Следующая команда:

fuse-zip abc.zip abc.mnt

покажет содержимое abc.zip в каталоге abc.mnt . Затем делайте что хотите с содержимым каталога:

cp -r ../seconddir/folder3 abc.mnt/

После этого размонтируйте каталог:

fusermount -u abc.mnt; rm -rf abc.mnt

Вы сделали

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .