gho*_*g74 88
只需输入一些引号来逃避通配符:
unzip "*.zip"
Run Code Online (Sandbox Code Playgroud)
Ped*_*ito 56
使用zip文件的文件名将当前目录中的所有zip文件提取到新的dirs中.
例如,以下文件:
myfile1.zip
myfile2.zip
Run Code Online (Sandbox Code Playgroud)
将被提取到:
./myfile1/files...
./myfile2/files...
Run Code Online (Sandbox Code Playgroud)
Shell脚本:
#!/bin/sh
for zip in *.zip
do
dirname=`echo $zip | sed 's/\.zip$//'`
if mkdir "$dirname"
then
if cd "$dirname"
then
unzip ../"$zip"
cd ..
# rm -f $zip # Uncomment to delete the original zip file
else
echo "Could not unpack $zip - cd failed"
fi
else
echo "Could not unpack $zip - mkdir failed"
fi
done
Run Code Online (Sandbox Code Playgroud)
pha*_*ace 34
unzip*.zip,或者如果它们在子文件夹中,那么就像
find . -name "*.zip" -exec unzip {} \;
Run Code Online (Sandbox Code Playgroud)
Jah*_*hid 15
for i in *.zip; do
newdir="${i:0:-4}" && mkdir "$newdir"
unzip "$i" -d "$newdir"
done
Run Code Online (Sandbox Code Playgroud)
这会将所有zip存档解压缩到以zip存档的文件名命名的新文件夹中.
a.zip b.zip c.zip将分别解压缩到a b c文件夹中.
解压缩所有.zip文件并将内容存储在具有相同名称的新文件夹中,并与文件位于同一文件夹中.zip:
find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Run Code Online (Sandbox Code Playgroud)
这是@phatmanace的答案的延伸,并解决了@ RishabhAgrahari的评论:
这将提取当前目录中的所有zip文件,如果我想在相应的子文件夹中提取zip文件(存在于子文件夹中),该怎么办?
aunpack -e *.zip,atool已安装.它具有智能处理错误的优点,并且总是解压缩到子目录中,除非zip只包含一个文件.因此,没有使用大量文件污染当前目录的危险,因为unzip没有目录结构的zip存在.
小智 5
在任何POSIX Shell中,这将为每个zip文件解压缩到另一个目录中:
for file in *.zip
do
directory="${file%.zip}"
unzip "$file" -d "$directory"
done
Run Code Online (Sandbox Code Playgroud)
如果“当前目录”是指 zip 文件所在的目录,那么我将使用以下命令:
find . -name '*.zip' -execdir unzip {} \;
Run Code Online (Sandbox Code Playgroud)
摘自 find 的手册页
-execdir command ;
-execdir command {} +
Run Code Online (Sandbox Code Playgroud)
与 -exec 类似,但指定的命令是从包含匹配文件的子目录运行的,该子目录通常不是您开始查找的目录。这是一种更安全的调用命令的方法,因为它避免了解析匹配文件的路径期间的竞争条件。与 -exec 选项一样,-execdir 的“+”形式将构建一个命令行来处理多个匹配的文件,但任何给定的命令调用都只会列出同一子目录中存在的文件。如果使用此选项,则必须确保 $PATH 环境变量不引用当前目录;否则,攻击者可以通过在要运行 -execdir 的目录中保留适当命名的文件来运行他们喜欢的任何命令。
| 归档时间: |
|
| 查看次数: |
171919 次 |
| 最近记录: |