我有一个ZIP文件目录(在Windows机器上创建的)。我可以手动解压缩他们使用unzip文件名,但我怎么能解压缩所有的ZIP文件在当前文件夹通过shell?
使用Ubuntu Linux服务器。
我有一个ZIP文件目录(在Windows机器上创建的)。我可以手动解压缩他们使用unzip文件名,但我怎么能解压缩所有的ZIP文件在当前文件夹通过shell?
使用Ubuntu Linux服务器。
当前回答
如果你所说的“当前目录”是指zip文件所在的目录,那么我将使用以下命令:
find . -name '*.zip' -execdir unzip {} \;
节选自find的手册页
-execdir command ;
-execdir command {} +
Like -exec, but the specified command is run from the subdirectory containing the matched file, which is not normally the directory in which you started find. This a much more secure method for invoking commands, as it avoids race conditions during resolution of the paths to the matched files. As with the -exec option, the '+' form of -execdir will build a command line to process more than one matched file, but any given invocation of command will only list files that exist in the same subdirectory. If you use this option, you must ensure that your $PATH environment variable does not reference the current directory; otherwise, an attacker can run any commands they like by leaving an appropriately-named file in a directory in which you will run -execdir.
其他回答
如果文件是gzip的。然后使用:
gunzip -rfk .
从根目录通过保留原始文件(或删除-k删除它们)来递归地提取各自目录中的文件。
下面的shell脚本将当前目录中的所有zip文件提取到新的dirs中,并以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
源要点
用法:
cd /dir/with/zips
wget -O - https://www.toptal.com/developers/hastebin/suvefuxuxo.bash | bash
这在bash中工作,根据这个链接:
解压缩\ * . zip
要解压缩目录中的所有文件,只需在终端中键入以下命令:
unzip '*.zip'
for i in `ls *.zip`; do unzip $i; done