Как мне распаковать.zip файлы в нескольких каталогах?

Мой каталог выглядит так

./Dir1/Some file.zip
./Dir2/Some other file.zip
./UnzipFiles.sh

Я хочу перебрать каждый каталог в ./ и распакуйте zip-файл каждого из них.

UnzipFiles.sh выглядит так:

#!/bin/bash

for i in ./*/*.zip
do
        cd "$i";
        unzip "$i";
done

Но это распаковывает все в ./, Я хочу, чтобы содержимое каждого файла.zip распаковывалось в каталог, содержащий его.

Как мне сделать это в Bash?

3 ответа

Решение

Я был cdв каждый .zip сам файл. Вместо этого мне нужно было сделать это:

#!/bin/bash

for i in ./*/
do
        cd "$i";
        unzip *.zip;
        cd ../;
done

Простой лайнер, который может сэкономить вам много времени

$ для файла в ls *.zip; сделать распаковать $ file -d echo $file | cut -d . -f 1; сделанный

unzip '*.zip'

Это распакует каждый файл .zip в текущем каталоге.

Другие вопросы по тегам