2014-03-05 4 views
-1

Я пытаюсь создать цикл, который реализует множество отдельных элементов, которые я видел раньше, и комбинация меня отбрасывает. В принципе у меня есть структура вроде этого:Loop для распаковки из одного каталога в отдельные каталоги

/bin/script.sh 
/conf/patches/1.zip 
/conf/patches/2.zip 
/conf/patches/3.zip 
/sharedir 

Я хочу цикл, который будет проходить через однако многие патчи я имею в/CONF/патчи, распаковать каждый патч в отдельный каталог в/sharedir. В каждом каталоге должно быть указано имя файла.

То, что я пытался до сих пор было:

for file in '../conf/patches/*.zip' 
do 
    unzip "${file%%.zip}" -d /sharedir/$file 
done 

Как вы можете видеть ... есть определенно что-то мне не хватает в этой комбинации.

ответ

1

Попробуйте это:

for file in /conf/patches/*.zip 
do 
    f="${file##*/}" 
    mkdir -p "/sharedir/${f%.zip}" 
    unzip -d "/sharedir/${f%.zip}" "${file}" 
done 
1

Удалите цитаты из Глоб рисунка в противном случае она не расширена:

for file in ../conf/patches/*.zip 
do 
    unzip "${file%%.zip}" -d /sharedir/ 
done 

EDIT: Вы можете попробовать

for f in ../conf/patches/*.zip; do 
    echo g="${f%%/*}" 
    unzip -d "sharedir/${g%*.zip}" "$f" 
done 
+0

checkdir: не может создать извлечение каталог: /sharedir/../conf/patches/1.zip Это ошибка, которую я получаю. Я считаю, что это была моя проблема. Когда он проходит через zip-файлы, он фактически создает имя файла, используя весь путь, а также имя файла. Кажется, что это не путь. –

+0

Попробуйте сейчас, я считаю, что это должно сработать. – anubhava

+0

Теперь он запускается, но он не создает каталог для распаковки. Он просто распаковывает все это в/sharedir/Я хочу, чтобы он также создавал каталог для каждого почтового индекса, а затем распаковывал его в каждый. то есть/sharedir/1/unzipcontentsfrom1; и т. д. –

Смежные вопросы