I have a directory full of zip files. Each called something like 'files1.zip'. My instinct is to use a bash for loop to unzip each file.
Trouble is, many of the 开发者_开发百科files will unzip their contents straight into the parent directory, rather then unfolding everything into their own unique directory. So, I get file soup.
I'd like to ensure that 'files1.zip' pours all of it's files into a dir called 'files1', and so on.
As an added complication, some of the filenames have spaces.
How can I do this?
Thanks.
for f in *.zip; do
dir=${f%.zip}
unzip -d "./$dir" "./$f"
done
Simple one liner
$ for file in `ls *.zip`; do unzip $file -d `echo $file | cut -d . -f 1`; done
you can use -d to unzip to a different directory.
for file in `echo *.zip`; do
[[ $file =~ ^(.*)\.zip$ ]]
unzip -d ${BASH_REMATCH[1]} $file
done
精彩评论