当我尝试
unzip filename.zip
Run Code Online (Sandbox Code Playgroud)
有用。但是,我需要解压缩一系列 zip 文件。
为什么是:
find . -name "*.zip" -print0 | xargs -0 unzip
Run Code Online (Sandbox Code Playgroud)
或者
ls *.zip | xargs unzip
Run Code Online (Sandbox Code Playgroud)
不工作?
在这两种情况下,我都会收到“警告:文件名不匹配:”消息。
vfb*_*lva 51
您可以发出以下命令:
$ unzip '*.zip'
Run Code Online (Sandbox Code Playgroud)
在这里查看以供参考。
Kev*_*vin 30
您的命令不起作用,因为它们将所有文件都填充到同一命令行中。虽然这适用于大多数程序,但unzip会将第一个参数作为 zip 文件,并将第一个参数作为从中提取的文件。您需要为每个文件执行一次命令:
find . -name "*.zip" -print0 | xargs -0 -n1 unzip
Run Code Online (Sandbox Code Playgroud)
或者
find . -name '*.zip' -exec unzip {} \;
Run Code Online (Sandbox Code Playgroud)
在 bash 中,您还可以执行以下操作:
for i in *.zip; do
unzip "$i"
done
Run Code Online (Sandbox Code Playgroud)
也unzip可以带-d开关,这样你就可以将输出定位到不同的位置。
例如:
uzdir=/path/to/unzips
for i in *.zip; do
[ -d "$uzdir/$i" ] || mkdir -p "$uzdir/$i"
unzip "$i" -d "$uzdir/$i"
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47589 次 |
| 最近记录: |