在不同目录中工作时压缩文件

在不同目录中工作时压缩文件

我正在尝试从命令行压缩一个文件,而我当前正在与该文件不同的目录中工作。

该文件位于/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。您也可以为其创建一个脚本。

相关内容