我正在尝试从命令行压缩一个文件,而我当前正在与该文件不同的目录中工作。
该文件位于/home/one/file.txt
当前工作目录是/home/two/
当我使用命令时zip /home/one/file.zip /home/one/file.txt
,zip 文件会在正确的目录中创建(/home/one
),但 zip 文件的内容是/home/one/file.txt
。我希望 zip 文件仅包含file.txt
。
执行这个命令是什么?
答案1
Zip 是相对于当前目录归档文件结构。要覆盖它,您需要一个-j
标志。根据手册页:
-j --junk-paths
Store just the name of a saved file (junk the path), and do not store directory names. By default, zip will store the full path (relative to the current directory).
编辑:这意味着-j
省略目录名称,因此只会压缩文件。因此您的示例(工作目录在 /home/two)将如下所示:
zip -j ../one/file.zip ../one/file.txt
答案2
最简单的解决方案是使用此命令:
cd /home/one; zip /home/two/file.zip file.txt
您可以使用pushd
而不是 ,cd
这样您就可以回到同一个文件夹popd
。您也可以为其创建一个脚本。