我想解压单个文件。这些文件的扩展名为 .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 文件都将列出,现在您可以轻松选择/剪切/粘贴它们。