我正在运行命令
zip -p mypassword archieve.zip -r 下载/
它创建一个文件
我的密码.zip
我究竟做错了什么?
我正在运行命令
zip -p mypassword archieve.zip -r 下载/
它创建一个文件
我的密码.zip
我究竟做错了什么?
如何使用方舟图形界面创建一个zip压缩包,并使用“ Store ”而不是“ Deflate ”进行压缩?
更新
显然,关于压缩方法的版本之间存在显着差异。
@Marcus Müller的声明“来自新安装的 Ark 22.12.3 的屏幕截图”提示我在另一台机器上打开 Ark。
方舟 18.8.3
方舟 20.12.2
我现在还在Creating Archives and Adding Files上找到了这句话。
请注意,使用预选默认值以外的压缩方法可能会限制与文件归档程序的兼容性。例如,使用“Deflate”以外的压缩方法打开 zip 存档需要更新的存档软件。
是否有一个标志可以传递给命令zipinfo
以非递归方式列出存档的内容?
例如,如果目标存档包含三个目录,每个目录又包含五个空目录,我不希望命令返回十五个元素,而只返回三个“顶级”或“第一级”目录。
如何实现?
在构建提取 ZIP 文件的应用程序时,我注意到有时 ZIP 文件明确包含目录条目,有时则不包含。例如给出以下结构
folder1/
└── file1
通过以下方式列出内容时,我发现文件会提供以下不同的输出unzip -lv file.zip
:
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
5 Stored 5 0% 2023-04-20 13:54 3bb935c6 folder1/file1
-------- ------- --- -------
5 5 0% 1 file
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
0 Stored 0 0% 2023-04-20 13:54 00000000 folder1/
5 Stored 5 0% 2023-04-20 13:54 3bb935c6 folder1/file1
-------- ------- --- -------
5 5 0% 2 files
请注意第二个文件夹中明确说明的文件夹。
这里的标准是什么?程序通常会假设这是如何处理的吗?两者之一是有利的吗?
我正在尝试创建一个包含 5 个 PDF 和一个附加 ZIP 文件(位于当前工作文件夹上方的文件夹中)的 ZIP 存档。这似乎有效,但仅在一定程度上有效。
例如:
$ ls -lh
total 5.0M
-rw-r--r-- 1 root root 227K Apr 8 18:53 activity.pdf
-rw-r--r-- 1 root root 2.2M Apr 8 18:53 activity1.pdf
-rw-r--r-- 1 root root 279K Apr 8 18:53 activity2.pdf
-rw-r--r-- 1 root root 761K Apr 8 18:53 activity3.pdf
-rw-r--r-- 1 root root 1.6M Apr 8 18:53 activity4.pdf
$ ls -lh ..
total 11M
-rw-r--r-- 1 root root 11M Apr 5 12:16 Another_Archive.zip
要压缩前一个文件夹中存在的 5 个 PDF 文件和ZIP,我正在执行以下操作:
$ zip Final_Archive.zip *.pdf ../Another_Archive.zip
adding: activity.pdf (deflated 12%)
adding: activity1.pdf (deflated 10%)
adding: activity2.pdf (deflated 11%)
adding: activity3.pdf (deflated 9%)
adding: activity4.pdf (deflated 11%)
adding: ../Another_Archive.zip (stored 0%)
现在,每当我unzip
从 CLI 运行时,我都可以正确看到所有内容:
$ unzip Final_Archive.zip
Archive: Final_Archive.zip
inflating: activity.pdf
inflating: activity1.pdf
inflating: activity2.pdf
inflating: activity3.pdf
inflating: activity4.pdf
warning: skipped "../" path component(s) in ../Another_Archive.zip
extracting: Another_Archive.zip
$ ls -lh
total 31M
-rw-r--r-- 1 root root 11M Apr 5 12:16 Another_Archive.zip
-rw-r--r-- 1 root root 15M Apr 8 19:02 Final_Archive.zip
-rw-r--r-- 1 root root 227K Apr 8 18:53 activity.pdf
-rw-r--r-- 1 root root 2.2M Apr 8 18:53 activity1.pdf
-rw-r--r-- 1 root root 279K Apr 8 18:53 activity2.pdf
-rw-r--r-- 1 root root 761K Apr 8 18:53 activity3.pdf
-rw-r--r-- 1 root root 1.6M Apr 8 18:53 activity4.pdf
但是,如果我从 Mac OS 解压缩文件(只需双击 zip 文件),它会提取除文件之外的所有内容Another_Archive.zip
。见下文:
如果我从 CLI 的 MacOS 解压缩它,它工作得非常好。这是由于 MacOS 上的取消归档过程存在某种问题,还是由于创建 zip 文件的方式存在问题?
用这个命令
find . -name '*.zip' -exec unzip '{}' ';'
我们在 . (目录),然后将它们解压缩到当前工作目录中, 但是, 结构消失了。
/backUp/pic1/1-1.zip
/backUp/pic1/1-2.zip
/backUp/pic2/2-1.zip
/backUp/pic2/2-2.zip
/backUp/pic3/3-1.zip
/backUp/pic3/3-2.zip
/backUp/pic3/3-3.zip
Current command result:
/new/1-1
/new/1-2
/new/2-1
/new/2-2
/new/3-1
/new/3-2
/new/3-3
desired result
/new/pic1/1-1
/new/pic1/1-2
/new/pic2/2-1
/new/pic2/2-2
/new/pic3/3-1
/new/pic3/3-2
/new/pic3/3-3
在这里问,但代码不起作用 dirname 和 basename 应该在这个命令中是什么?
我有一个调用 unzip 命令的 bash 脚本,它只需要提取其中文件路径包含子目录名称的文件,该子目录名称是 3 个特定单词之一:“a”、“apple”和“applescript” . 所以文件 /a/b/c.txt 和 /com/apple/foo.txt 都应该被提取。
我知道对于普通的 bash 命令行 glob,我可以使用类似*/{a,apple,applescript}/*.txt
的东西,但这在这里不适用,因为 unzip 命令是评估 glob 的东西,而不是 bash。
所以这样的命令不起作用:unzip -oj file.zip '*/{a,apple,applescript}/*.txt'
我尝试过的一件事是依次执行 3 个单独的解压缩命令,如下所示:
unzip -oj file.zip '*/a/*.txt'
unzip -oj file.zip '*/apple/*.txt'
unzip -oj file.zip '*/applescript/*.txt'
但这不起作用,除非 zip 文件肯定包含a
子目录和apple
子目录,而且我不能保证会是这种情况。
完成这项工作的最佳方法是什么?有没有办法在一个 zip 命令中使用正则表达式来做到这一点?或者,在 zip 文件中并非所有 3 个子目录名称都存在的情况下,有没有办法使 3 个顺序命令起作用?
我有一个包含 CSV 的 zip 文件,我想将其解压缩到特定文件夹中,并将文件重命名为与 zip 文件名相同的名称。例如。,
我有一个名为:youtube_videos.csv.zip 的 zip 文件,我想将其解压缩到名为 target 的某个文件夹,并将该文件夹中的文件重命名为 youtube-videos.csv。我有它,但分为以下两行:
unzip datasets/youtube_videos.csv.zip -d target
mv target/videos_data.csv target/youtube_videos.csv
有没有一种可以使用的衬垫?
我的任务是更新我们的一些网站,因此,在这样做之前,我必须压缩 public_html 文件夹,以便进行备份。
问题是,public_html 有一堆其他的 ZIP,它们是我不想删除的旧备份,以防我的备份失败或出于其他原因,我们需要返回 2-3 个备份。
但是,由于它们在那里并且在每个备份中都被捕获,因此备份文件会不断增长,因为它基本上包含其中的每个以前的备份。
那么有没有办法调整 zip 命令行调用,以便它获取所有文件,除了它找到的任何 .zip 或 .gzip 文件?
到目前为止,这个线程(仅从压缩存档中提取特定文件到给定目录)对我有很大帮助,因为我能够生成存档中所有文件的文件列表,使用:
unzip -l X201SC21041496-Z01-F002.zip
甚至查看一个也被压缩的特定文件,使用:
unzip -p X201SC21041496-Z01-F002.zip X201SC21041496-Z01-F002/rawdata/G_M0_2.fq.gz | gunzip -c | head
但是,第一个 .zip 文件中还有其他 .zip 文件,我想获取其中的列表,然后可能查看其中一些文件,而无需解压缩整个文件。我尝试了几件事:
unzip -p X201SC21041496-Z01-F002.zip X201SC21041496-Z01-F002/Result_X201SC21041496-Z01-F002_Canis_lupus_familiaris.zip | unzip -l
但是后来我只是参考了解压缩手册(公平地说,我需要)。或者:
unzip -pl X201SC21041496-Z01-F002.zip X201SC21041496-Z01-F002/Result_X201SC21041496-Z01-F002_Canis_lupus_familiaris.zip
这似乎列出了一些东西,但随后只是吐出垃圾。我现在求助于将存档从存档中提取到我的外部(使用 unzip 和上面建议的 -j 和 -d 标志,见下文)并希望我能够从那里导航该存档。但是,肯定有更好的方法吗?
unzip -j "X201SC21041496-Z01-F002.zip" "X201SC21041496-Z01-F002/Result_X201SC21041496-Z01-F002_Canis_lupus_familiaris.zip" -d "/Volumes/Elements_of_Elise/Postdoc_VI_UU/Qingkang/"
如果我没有使用正确的术语或符号,请提前道歉。非常菜鸟,但努力学习!我确实花了很多时间寻找答案,但我们到了。我在 Macbook pro BigSur 11.3.1 上使用我的终端。
在此先感谢您的帮助!