我有一个充满zip文件的目录。每个都称为'files1.zip'。 我的直觉是使用bash for循环来解压缩每个文件。
麻烦的是,许多文件会将其内容直接解压缩到父目录中,而不是将所有内容展开到它们自己的唯一目录中。所以,我得到文件汤。
我想确保'files1.zip'将所有文件倒入名为'files1'的目录中,依此类推。
作为一个额外的复杂功能,一些文件名有空格。
我该怎么做?
感谢。
答案 0 :(得分:17)
for f in *.zip; do
dir=${f%.zip}
unzip -d "./$dir" "./$f"
done
答案 1 :(得分:0)
简单的一行
$ for file in `ls *.zip`; do unzip $file -d `echo $file | cut -d . -f 1`; done
答案 2 :(得分:-1)
您可以使用-d解压缩到其他目录。
for file in `echo *.zip`; do
[[ $file =~ ^(.*)\.zip$ ]]
unzip -d ${BASH_REMATCH[1]} $file
done