我有一个ZIP文件目录(在Windows机器上创建的)。我可以手动解压缩他们使用unzip文件名,但我怎么能解压缩所有的ZIP文件在当前文件夹通过shell?
使用Ubuntu Linux服务器。
我有一个ZIP文件目录(在Windows机器上创建的)。我可以手动解压缩他们使用unzip文件名,但我怎么能解压缩所有的ZIP文件在当前文件夹通过shell?
使用Ubuntu Linux服务器。
当前回答
用这个:
for file in `ls *.Zip`; do
unzip ${file} -d ${unzip_dir_loc}
done
其他回答
解压缩*.zip,或者如果它们在子文件夹中,那么类似于
find . -name "*.zip" -exec unzip {} \;
在任何POSIX shell中,这将为每个zip文件解压缩到不同的目录:
for file in *.zip
do
directory="${file%.zip}"
unzip "$file" -d "$directory"
done
这在bash中工作,根据这个链接:
解压缩\ * . zip
这是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
如果文件是gzip的。然后使用:
gunzip -rfk .
从根目录通过保留原始文件(或删除-k删除它们)来递归地提取各自目录中的文件。