系统信息:
aggitan@moneque:~$ uname -a
Linux moneque 2.6.32-25-generic #44-Ubuntu SMP Fri Sep 17 20:05:27 UTC 2010 x86_64 GNU/Linux
aggitan@moneque:~$ 7z
7-Zip 9.04 beta Copyright (c) 1999-2009 Igor Pavlov 2009-05-30
p7zip Version 9.04 (locale=en_US.utf8,Utf16=on,HugeFiles=on,2 CPUs)
我有一个文件夹,其中包含 68 个档案,从 .rar、.ace 和 .zip 不等。
我想使用它们的文件夹名称作为第一个目录来提取所有这些文件(“在此处提取”)
如果我使用文件滚轮,它会在第一个错误时停止,文件滚轮似乎没有“忽略错误”标志。
如果我使用 7zip,它会将所有内容转储到当前文件夹中并且不使用干净文件夹
如何在不将所有内容溢出到当前目录的情况下将所有内容提取到单独的文件夹中?
for i in *; do mkdir "$i.extracted"; (cd "$i.extracted" && 7z x "../$i") || echo "Error with $i"; done
我不知道有任何直接的解决方案,但是通过一点 bash 循环,您可以在终端中执行此操作(如果,正如您的问题所暗示的那样,7zip 能够执行您想要的所有操作,除了根据文件名提取到文件夹中)。尝试(在包含档案的目录中):
${FILE%.*}
提取没有扩展名的文件名。一点 shell 脚本可能会派上用场。
将以上内容粘贴到文件
extract.sh
中(在要提取文件的目录中),然后使其可执行:.d
该脚本通过附加到其文件名(例如,对于存档stuff.zip
它将创建目录)在命令行上给定的每个存档创建一个目录stuff.zip.d
,然后将文件从存档中提取到其中。您可以在这样的终端中调用它(使用通配符一次性提取多个档案):
免责声明:未经测试,因此在进行大规模运行之前,请先使用一两个示例存档进行尝试。