如何批量提取位于同一文件夹中(每个文件仅包含一个文件)的大约 900 个 7z 文件?
我使用的是 Ubuntu 10.10 操作系统,所有文件都位于 /home/username/folder1/folder2
中。
7za -y x "*.7z"
上述代码对我起作用了
for arc in *.7z
do
7zwhatever "$arc"
done
使用parallel是非常方便的方式且带有完整的进度条,而且是免费的 ;)
ls *.7z | parallel -j+0 --eta '7z x {} >/dev/null'
7z x "*.7z"
这个命令在Ubuntu上是有效的。
for f in *.7z
do
7zr e "$f" &
done
.7z
文件到当前目录,无需等待完成。for archive in *.7z; do 7z x -o"`basename \"$archive\" .7z`" "$archive"; done
a.7z
和 b.7z
,它将创建两个文件夹 a
和 b
,并将 a.7z
解压到文件夹 a
,b.7z
解压到文件夹 b
。您不需要把事情弄得过于复杂。要提取分成多个部分的7-Zip存档,请使用以下命令:
7z x archive.7zip.0
7-Zip会提示您有一个多卷归档文件,并将其全部解压缩。
7z x archive.7zip.00*
将分开的两个.001和.002文件重新组合在一起。 - james-see可能最简单的方法如下:
ls | xargs -n1 7z x
除了使用for循环之外
您还可以将find与exec参数或xargs结合使用
带有-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
\*.7z
。 - user598527