将所有文件解压到同名目录中

将所有文件解压到同名目录中

乌班图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/

相关内容