Answers:
根据以下链接,这可以在bash中运行:
解压缩\ *。zip
只需加上一些引号即可避免使用通配符:
unzip "*.zip"
以下bash脚本使用该zip文件的文件名将当前目录中的所有zip文件提取到新目录中,即:
以下文件:
myfile1.zip
myfile2.zip
将被提取到:
./myfile1/files...
./myfile2/files...
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
"
在文件名中加上引号即可
解压缩* .zip,或者如果它们位于子文件夹中,则类似
find . -name "*.zip" -exec unzip {} \;
gzip'ed
文件,gunzip -rfk .
用于在相应文件夹内递归解压缩
解压缩所有.zip
文件并将内容存储在与该文件同名的新文件夹中.zip
:
find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
这是@phatmanace答案的扩展,并解决了@RishabhAgrahari的评论:
这将提取当前目录中的所有zip文件,如果我希望将zip文件(存在于子文件夹中)提取到各个子文件夹中怎么办?
gzip'ed
文件,gunzip -rfk .
用于在相应文件夹内递归解压缩
find: illegal option -- n
使用UnZip 6.00-其他人吗?
find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
您忘记了目录清单。
用这个:
for file in `ls *.Zip`; do
unzip ${file} -d ${unzip_dir_loc}
done
for file in 'ls *.zip'; do unzip "${file}" -d "${file:0:-4}"; done
for file in *.zip; do ...
正确地做会更安全吗?
这是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
for i in `ls *.zip`; do unzip $i; done
要解压缩目录中的所有文件,只需在终端中键入以下命令:
unzip '*.zip'
用
sudo apt-get install unzip
unzip file.zip -d path_to_destination_folder
在Linux中解压缩文件夹