我有一个ZIP文件的目录(在Windows机器上创建)。我可以使用unzip filename
手动解压缩它们,但是如何通过shell解压缩当前文件夹中的所有ZIP文件?解压目录中的所有文件
使用Ubuntu Linux服务器。
我有一个ZIP文件的目录(在Windows机器上创建)。我可以使用unzip filename
手动解压缩它们,但是如何通过shell解压缩当前文件夹中的所有ZIP文件?解压目录中的所有文件
使用Ubuntu Linux服务器。
(未经测试),但this link提示:
解压\ *拉链
解压缩* .zip文件,或者如果他们在子文件夹,然后像
find . -name "*.zip" -exec unzip {} \;
解压缩会执行通配符处理,因此名为“* .zip”的文件将无法达到您所期望的效果。 – geocar 2010-03-03 20:52:03
实际上,这将完全符合预期的结果,查找操作的结果正在传递给解压缩 – 2015-08-13 02:20:28
这将提取当前目录中的所有zip文件,如果我想要zip文件(存在于子文件夹中)在各自的子文件夹? – 2018-02-16 08:44:59
只是放在一些引号,以逃避通配符:
unzip "*.zip"
+1这一个为我工作。我必须用特定的格式解压缩文件名,而限制其余的文件。我只是把匹配的格式保存在双引号内,并且它像魅力一样工作。输出告诉我成功处理的档案数量。 – 2015-02-10 05:28:20
aunpack -e *.zip
,安装了atool
。 具有智能处理错误的优势,并且除非zip只包含一个文件,否则总是将其解压缩到子目录中。因此,不存在大量文件污染当前目录的风险,因为在没有目录结构的zip上存在unzip
。
使用此:
for file in `ls *.Zip`; do
unzip ${file} -d ${unzip_dir_loc}
done
提取物在当前目录下的所有压缩文件与压缩文件的文件名新迪尔斯。
前,将以下文件:
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
这是征服一切的东西。不能相信它没有投过高 – billynoah 2015-11-11 22:04:27
这不处理文件名中的空格。 – 2016-11-17 18:54:00
只需在文件名“''' – 2016-12-25 13:38:30
使用
sudo apt-get install unzip
unzip file.zip -d path_to_destination_folder
解压缩的文件夹中的Linux
哇好的命令 – 2015-04-21 08:40:51
这将只解压缩单个文件,问题是解压所有文件夹 – 2015-04-21 08:43:52
公平地说,标题“解压目录中的所有文件”*可能含糊不清,也意味着“将单个压缩文件解压缩到单独的目录中” – jdersen 2018-03-02 03:37:20
for i in *.zip; do
newdir="${i:0:-4}" && mkdir "$newdir"
unzip "$i" -d "$newdir"
done
这将解压缩所有压缩档案与Zip文件的文件名命名为新的文件夹。
a.zip
b.zip
c.zip
将分别被解压缩到a
b
c
文件夹。
for file in 'ls *.zip'; do unzip "${file}" -d "${file:0:-4}"; done
这是使用How to loop through a directory recursively to delete files with certain extensions教导的Pedro Lobitoanswer的变体:
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
要解压目录中的所有文件,只要输入这个cmd在终端:
unzip '*.zip'
这个答案是https://stackoverflow.com/a/2376135/6948900 – 2018-03-08 10:56:25
测试过,效果很好。 – jeffbyrnes 2014-01-25 17:24:38
至少在bash中起作用。 – 2014-04-16 16:36:39
\用于转义*,正确吗? – sdaffa23fdsf 2014-11-22 11:45:53