乌班图16.04
我有一个包含zip
如下文件的目录:
directory
|
|---zip1.zip
|---zip2.zip
|
...
|---zip_very_large_number.zip
现在,我有另一个目录/home/usrname/anotherdir
。有没有办法/home/usrname/anotherdir
通过以下方式将所有文件解压到:
/home/usrname/anotherdir
|---zip1(directory)
| |---_FILES_FROM_zip1.zip
|
|---zip2(directory)
| |---_FILES_FROM_zip2.zip
|
|---zip3(directory)
| |---_FILES_FROM_zip3.zip
|
...
|
|---zip_very_large_number(directory)
|---_FILES_FROM_zip_very_large_number.zip
有没有一种简洁的方法来做到这一点unzip
?我可以写一个 shell 脚本,但它看起来不太好......
答案1
没有一种简单的方法可以使用 来执行此操作unzip
,因为它一次只接受一个 zip 文件进行解压缩。考虑某种 shell 循环,例如:
for d in *.zip
do
dir=/home/usrname/anotherdir/zip${d%%.zip}
unzip -d "$dir" "$d"
done
答案2
这是一个适用于当前目录中任何 zip 的单行代码
for z in *.zip; do unzip "$z" -d "${z%".zip"}"; done
您可以将其添加到您的.bashrc
alias unzip_all='for z in *.zip; do unzip "$z" -d "${z%".zip"}"; done'
灵感来自:
Method #2: Unzipping Multiple Files from Linux Command Line Using Shell For Loop (Long Version)
在https://www.cyberciti.biz/faq/linux-unix-shell-unzipping-many-zip-files/