我尝试压缩给定目录中的所有文件夹.所以我写了这个
find /home/user/rep/tests/data/archive/* -maxdepth 0 -type d -exec zip -r "{}" \;
Run Code Online (Sandbox Code Playgroud)
但得到了
zip error: Nothing to do! (/home/user/rep/tests/data/archive/tmp.zip)
zip error: Nothing to do! (/home/user/rep/tests/data/archive/tmp_dkjg.zip)
Run Code Online (Sandbox Code Playgroud)
这是包含的内容
user@machine:~$ ls /home/aliashenko/rep/tests/data/archive/
tmp tmp_dkjg tmp_dsf
Run Code Online (Sandbox Code Playgroud)
Ben*_*rth 27
从文件列表中,zip myZippedImages.zip alice.png bob.jpg carl.svg. 您需要指定两者
从文件夹中,zip -r myZippedImages.zip images_folder
为了比 Alex 的答案更清楚,要创建 zip 文件,zip 至少需要 2 个参数。我怎么知道,因为当你使用 时man zip,你会得到它的手册页,其中一部分是:
zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [--longoption ...] [-b path]
[-n suffixes] [-t date] [-tt date] [zipfile [file ...]] [-xi list]
Run Code Online (Sandbox Code Playgroud)
当你zip在命令行中输入时,你会得到:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,请注意[zipfile list]或[zipfile [file ...]]。方括号表示某些内容是可选的。如果您不保存到 zip 文件,则list不需要该参数。
如果您想保存到 zip 文件中(选择该[zipfile list]选项,您还需要提供list,因为它位于方括号内。因此,我更喜欢 的输出zip而不是man zip。(手册页可能会令人困惑)
问题是您没有为它将创建的zip文件提供名称.
find /home/user/rep/tests/data/archive/* -maxdepth 0 -type d -exec zip -r "{}" "{}" \;
Run Code Online (Sandbox Code Playgroud)
这将创建一个单独的压缩目录为每个子文件夹tmp tmp_dkjg和tmp_dsf