我是 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
房间:
- 它将进入
abc.zip
(folder3/textfile.txt
保留层次结构) - 还使用了一个
-j
开关(帮助说它丢弃了路径信息,但确实如此) - 它只会移动到abc.zip
并位于同一水平,folder1
而folder2
不是替换textfile.txt
内部abc.zip/folder1
我的问题是——我想abc.zip/folder1/textfile.txt
用里面的那个替换seconddir/folder3/textfile.txt
。
如何通过命令行界面实现这一点?
答案1
我也使用 tar,但如果您需要 zip,那么:
zip -b path/to/create/in zipfile.zip textfile.txt
答案2
我总是自己用焦油滚动......
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 并继续使用它。如果你需要在 Windows 中提取 tar,7-zip或者压缩包应该可以解决问题。我确信 OSX 本身就支持它。
答案3
也许安装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
你完成了。