从多个 zip 文件中解压单个文件,并将这些单个文件提取到主目录

从多个 zip 文件中解压单个文件,并将这些单个文件提取到主目录

我想解压单个文件。这些文件的扩展名为 .txt。这些文件也位于多个压缩文件中。这是我尝试使用的命令。

unzip -jn /path/to/zipped/files/zipArchiveFile2011\*.zip /path/to/specific/individual/files/myfiles2011*.txt -d /path/to/home/directory/for/extract/

据我了解,-j 选项会排除目录,并且只会提取 txt 文件。如果文件已被提取,-n 选项将不会覆盖该文件。我还了解到,正斜杠是/path/to/zipped/files/zipArchiveFile2011\*.zip转义通配符 (*) 所必需的。

这是我遇到的错误消息示例:

Archive: /path/to/zipped/files/zipArchiveFile20110808.zip caution: filename not matched: /path/to/specific/individual/files/myfiles20110807.txt caution: filename not matched: /path/to/specific/individual/files/myfiles20110808.txt Archive: /path/to/zipped/files/zipArchiveFile20110809.zip caution: filename not matched: /path/to/specific/individual/files/myfiles20110810.txt caution: filename not matched: /path/to/specific/individual/files/myfiles20110809.txt

我感觉我遗漏了一些非常简单的东西。我尝试在目录路径周围使用单引号 (') 和双引号 (")。但没有成功。

答案1

对于文件名中带有范围表达式的解压缩命令,我们需要对目标文件名中的范围格式和通配符进行转义,例如,要将 order0710.zip、... order0715.zip 中扩展名为 txt 的文件解压缩到文件夹 txt_pool 中,我们应该发出如下命令:

unzip -jn order071\[0-5].zip \*.txt -d txt_pool

答案2

*我认为您还应该在文件列表中引用。该命令应类似于以下内容:

unzip -jn /path/to/zipped/files/zipArchiveFile2011\*.zip
      /path/to/specific/individual/files/myfiles2011\*.txt 
      -d /path/to/home/directory/for/extract/

如果没有引用,第二个*bash 会将其展开并放置文件名。您可以使用以下命令检查传递给命令的值echo

echo /path/to/specific/individual/files/myfiles2011*.txt

答案3

你试过 WinRar 吗?

只需创建一个名为 unrar.bat 的批处理文件

c: md \unrar cd \unrar "C:\Program Files (x86)\WinRAR\unrar.exe" e %1 启动 c:\unrar

现在右键单击任何 .zip 文件并选择打开方式...浏览 unrar.bat

我希望你能理解这个想法。

PS:您可以在任务栏/快速启动处创建一个快捷方式,然后将文件拖到 .bat 文件的图标上 - 而不是右键单击...

如果您不想要目录,请在末尾使用 *.txt 掩码进行搜索。所有 txt 文件都将列出,现在您可以轻松选择/剪切/粘贴它们。

相关内容