将多个文件解压到给定目录

将多个文件解压到给定目录

简而言之,我不确定我做错了什么,但基本上我想要做的是循环遍历所有 zip 文件,然后将其内容解压缩到具有 zip 名称的目录中。

例子:

文件:a.zipb.zip

命令

for i in `ls *.zip`; do unzip $i -d  `echo $i | cut -f1 -d'.'` ; done

预期的:

文件a夹内容a.zip 文件b夹内容b.zip

怎么了:

未找到 zip 文件。unzip:无法找到或打开 a.zip、a.zip.zip 或 a.zip.ZIP。

对于可能出现的问题有什么提示吗?

答案1

我建议使用find时不要解析 ls 或其本身的输出find,以避免与以下问题相关的问题文件名中最终出现的特殊字符

 find . -name "*.zip" -exec bash -c ' unzip "$0" -d "${0%*.zip}"  '  {} \;

答案2

这应该有效:

for i in *.zip; do
newdir="${i:0:-4}" && mkdir "$newdir"
unzip "$i" -d  "$newdir"
done

答案3

用这个:

for i in `find | grep .zip$`;do unzip $i;done

编辑

先前的答案是错误的(;

for i in `find | grep .zip$ | sed '[email protected]$@@'`;do mkdir $i;unzip $i.zip -d $i;done

尝试一下这个!

相关内容