2016-01-25 3 views
0

У меня есть серия zip-архивов, из которых я хочу извлечь один текстовый файл в выходной каталог. файл находится в общей папке:Bash Partial Unsip of Archive in Loop

archive.zip/archive/summary.txt

У меня есть следующий код, который я думал, что должен работать:

for file in *.zip 
do 
    name=${file##*/} 
    base=${name%.zip} 
    unzip -j $name/$base/summary.txt -d /$output/$file-summary.txt 
done 

Однако распаковать не может найти текстовые файлы.

+0

** 1 ** Что значение "$ выход"? ** 2. ** Я бы выполнил чек с помощью 'sed -x' (или' bash -x yourscript' для вывода точной команды, которая будет работать после разбора и расширения. ** 3. ** «Двойная кавычка» каждого литерала который содержит пробелы/метасимволы и _every_ expand: «$ var», «$ (команда« $ var »)», «$ {array [@]}», «a & b». См. http: //mywiki.wooledge. org/Quotes, http://mywiki.wooledge.org/Arguments и http://wiki.bash-hackers.org/syntax/words. –

+0

@RanyAlbegWein: Я думаю, что получаю вывод и извлекаю каталоги немного неправильно в команда unzip, и я также добавил двойные кавычки.Я добавлю код, который я получил, чтобы работать ниже в качестве ответа.Они могут когда-нибудь быть полезными для кого-то. – mattbawn

+0

Отлично, я даже дам вам голосование! –

ответ

1

В конце концов следующее сделал то, что хотел:.

for file in *.zip 
do 
    name=${file##*/} 
    base=${name%.zip} 
    unzip -j "$name" "$base/summary.txt" -d "$output/$base" 
done