Разархивируйте файл в его текущий каталог

Я понял, что для извлечения .zip вам нужен путь к каталогу, когда вы рекурсивно просматриваете подкаталоги. Так как вы храните путь? Это почти там, но не работает должным образом, когда есть пробел в {zip_file}.

zip_dir=$PWD/$(basename "${zip_file}")
1
задан 24 May 2015 в 17:58

2 ответа

Я создал это из Вашего другого вопроса также. Это взяло меня немного, но это - то, что я смог придумать для создания папок на основе названия zip-файла, удалив .zip с имени папки, затем извлекая zip-файл в ту папку.

#!/bin/bash

echo "Start folder create..."
find . -type f -iname "*.zip" | while read filename
do
 filename1=${filename:2}
 foldername=$PWD/"${filename1%.*}"
 mkdir -p "$foldername"
 unzip "$filename" -d "$foldername"
 echo "Created directory $foldername and extracted files to it." 
done

строка filename1=${filename:2} снимает изоляцию ./ из имени.

0
ответ дан 24 May 2015 в 17:58

Редактирование: Я, должно быть, не протестировал это правильно.

Обычно Вам не нужны кавычки при делании уроки, как раз в то самое время, когда разыменование переменной. При создании присвоения Вы не должны помещать кавычки вокруг разыменовываемой переменной, но так как разыменование происходит в оболочке sub, кавычки необходимы вокруг ${zip_file} часть так, чтобы это было значение, правильно передается базовому имени. Кавычки НЕ на самом деле необходимы вокруг всей строки, потому что тогда она вернулась в контексте переменного присвоения, где кавычки не необходимы, поскольку удар сделает правильную вещь с передачей значения от подоболочки до строки присвоения.

Благодарен за то, что @janos указывает на это. Я не уверен, что я завинтил в тестировании исходной строки, которая взяла меня вниз путь чрезмерных кавычек. Вы корректны, следующее прекрасно:

zip_dir=$PWD/$(basename "${zip_file}")
0
ответ дан 24 May 2015 в 17:58

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

Похожие вопросы: