我有一个ZIP文件目录(在Windows机器上创建的)。我可以手动解压缩他们使用unzip文件名,但我怎么能解压缩所有的ZIP文件在当前文件夹通过shell?

使用Ubuntu Linux服务器。


当前回答

用这个:

for file in `ls *.Zip`; do
unzip ${file} -d ${unzip_dir_loc}
done

其他回答

只需输入一些引号来转义通配符:

unzip "*.zip"

解压缩*.zip,或者如果它们在子文件夹中,那么类似于

find . -name "*.zip" -exec unzip {} \;

这是Pedro Lobito回答的一个变体,使用如何递归地遍历目录以删除具有某些扩展名的文件:

shopt -s globstar
root_directory="."

for zip_file_name in **/*.{zip,sublime\-package}; do
    directory_name=`echo $zip_file_name | sed 's/\.\(zip\|sublime\-package\)$//'`
    printf "Unpacking zip file \`$root_directory/$zip_file_name\`...\n"

    if [ -f "$root_directory/$zip_file_name" ]; then
        mkdir -p "$root_directory/$directory_name"
        unzip -o -q "$root_directory/$zip_file_name" -d "$directory_name"

        # Some files have the executable flag and were not being deleted because of it.
        # chmod -x "$root_directory/$zip_file_name"
        # rm -f "$root_directory/$zip_file_name"
    fi
done

解压缩所有。zip文件,并将内容存储在与。zip文件同名的新文件夹中:

find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;

这是@phatmanace的回答的延伸,并解决了@RishabhAgrahari的评论:

这将在当前目录中提取所有的zip文件,如果我想在各自的子文件夹中提取zip文件(目前在子文件夹中)怎么办?

对于'ls *.zip'文件;解压缩"${file}" -d "${file:0:-4}";完成