在Ubuntu中,如何一次性从文件夹中提取多个7z文件?

30

如何批量提取位于同一文件夹中(每个文件仅包含一个文件)的大约 900 个 7z 文件?

我使用的是 Ubuntu 10.10 操作系统,所有文件都位于 /home/username/folder1/folder2 中。

11个回答

49
7za -y x "*.7z" 

上述代码对我起作用了


2
引号是我缺失的必要组成部分。没有它们,它就无法正常工作。 - Artem Russakovskii
在 Fedora 38 上,我不得不注释掉星号\*.7z - user598527

20
for arc in *.7z
do
  7zwhatever "$arc"
done

11

使用parallel是非常方便的方式且带有完整的进度条,而且是免费的 ;)

ls *.7z | parallel -j+0 --eta '7z x {} >/dev/null'

9

7z x "*.7z"这个命令在Ubuntu上是有效的。


也许您可以解释一下这行代码的作用,例如引用手册。这可能有助于其他遇到相同问题的用户更好地理解它是如何解决问题的。 - Jankapunkt
实际上与当前的最佳答案(发布于2016年)几乎相同,只是没有-y标志(确认全部)。Ubuntu是否有提供7z命令的软件包? - user598527

7
for f in *.7z
do
    7zr e "$f" &
done

这将提取所有7z格式的.7z文件到当前目录,无需等待完成。
警告:您的计算机可能被接管。

1
如果你有900个文件,那肯定会很痛苦。 - Ignacio Vazquez-Abrams

6
如果您希望在Linux中将多个7zip存档文件提取到相同名称的文件夹中,可以使用以下命令:
for archive in *.7z; do 7z x -o"`basename \"$archive\" .7z`" "$archive"; done

例如,如果你有两个7zip压缩文件 a.7zb.7z,它将创建两个文件夹 ab,并将 a.7z 解压到文件夹 ab.7z 解压到文件夹 b
上述命令来自用户Vojtech这个superuser答案中的回复。

5

您不需要把事情弄得过于复杂。要提取分成多个部分的7-Zip存档,请使用以下命令:

7z x archive.7zip.0

7-Zip会提示您有一个多卷归档文件,并将其全部解压缩。


这个很棒。而且我使用了7z x archive.7zip.00*将分开的两个.001和.002文件重新组合在一起。 - james-see

5

可能最简单的方法如下:

 ls | xargs -n1 7z x 

0

除了使用for循环之外

您还可以将find与exec参数或xargs结合使用


0

带有-aos参数的另一个示例。

# ls Environment-voice-20180629-20180705-20230706024500.zip Environment-voice-20180729-20180802-20230706050000.zip | xargs -n1 7za x -aos '-xr!/http*'

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,16 CPUs Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (50657),ASM,AES-NI)

Scanning the drive for archives:
1 file, 2928050140 bytes (2793 MiB)

Extracting archive: Environment-voice-20180629-20180705-20230706024500.zip
--
Path = Environment-voice-20180629-20180705-20230706024500.zip
Type = zip
Physical Size = 2928050140
64-bit = +

Everything is Ok

Files: 631108
Size:       2664870996
Compressed: 2928050140

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,16 CPUs Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz (50657),ASM,AES-NI)

Scanning the drive for archives:
1 file, 2387436055 bytes (2277 MiB)

Extracting archive: Environment-voice-20180729-20180802-20230706050000.zip
--
Path = Environment-voice-20180729-20180802-20230706050000.zip
Type = zip
Physical Size = 2387436055
64-bit = +

Everything is Ok

Files: 505001
Size:       2177832150
Compressed: 2387436055



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接