Архивы и shell

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by alpotemkin, 16 Jun 2010.

  1. alpotemkin

    alpotemkin Elder - Старейшина

    Joined:
    7 May 2008
    Messages:
    57
    Likes Received:
    1
    Reputations:
    0
    Доброго времени суток!

    Условия:
    1. ОС Linux
    2. Есть папка со множеством подкаталогов и файлов. Примерная структура такова:
    -00/А/Петров Петр/Детектив/kniga1.fb2
    -00/А/Петров Петр/Детектив/kniga2.fb2
    -00/И/Иванов Иван/kniga25.fb2
    ...

    В общем говоря так:
    /00/Буква алфавита/ФИО автора/Серия/Книга.fb2
    /00/Буква алфавита/ФИО автора/Книга.fb2

    3. Есть скрипт для запаковки этих книг в .zip

    Code:
    #!/bin/sh
    
    #========= Путь меняешь на свой например: pth=/var/www
    pth=/00/
    #========= Формат ставишь свой
    format=.fb2
    
    mass=`find $pth -name *$format`
    for i in $mass;do
    mass2=`echo $i | sed 's/'$format'/.zip/g'`
    for m in $mass2;do
    echo $m $i | while read param1 param2; do
    zIp=$param1
    nm=$param2
    zip -9 -m $zIp $nm
    done
    done
    done
    
    Теперь проблема: скрипт работает нормально, только фишка в том, что он пакует книги с их полными путями, что не есть гуд.
    Это еще ладно, но он еще и не воспринимает кириллицу, и запаковав распаковывать не получается - вместо имен папок "???" (сами файлы в кириллице), в итоге выкидывает ошибку.

    Помогите разобраться. Если не переписать скрипт, то хотя бы покажите пальцем на ошибку и куда копать.

    Заранее спасибо.
     
    #1 alpotemkin, 16 Jun 2010
    Last edited: 16 Jun 2010
  2. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    man zip
    или попробуй заюзать другой архиватор

    вон например почитав хелп к winrar замутил команду
    rar.exe a -o+ -ep -r X:\zlo\mailhist.rar *history.txt

    a добавить фалы в архив
    o+ перезаписывать
    ep исключить пути файлов
    r рекурсивно по всем дирам

    ща читаю ман по зипу
    так что что-то типа рекурсивно все файлы начиная с текущей диры с расширением fb2
    zip -r foo . -i *.fb2

    RTFM )
     
    _________________________
    #2 Gar|k, 16 Jun 2010
    Last edited: 16 Jun 2010
  3. alpotemkin

    alpotemkin Elder - Старейшина

    Joined:
    7 May 2008
    Messages:
    57
    Likes Received:
    1
    Reputations:
    0
    Да, я тоже так хотел, но читалка моя из .rar не умеет читать.
    P.S. Почему только .zip - именно для читалки... чтобы умела читать книги из архива. Ибо у меня нетбук (читаю только с него) и там места немного.
    А незапакованные... для сравнения: 200 книг незапакованных - 300 метров, запакованных - около 100... разница нефиговая. :)

    Хм, сейчас попробовал в разных вариантах - не срабатывает... Вообще, я так понимаю, что просто сам архиватор кривой.
    Потому что у меня щас версия Ubuntu 10.04... А в 9.10 все работало нормально...
    Видно, придется по форумам Ubuntu шарить, чтобы найти решение. Но хотелось бы найти решение, чтобы скрипт игнорировал путь и паковал сам файл без путей от корня.
     
  4. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    ага и линукс кривой ))) и клава не то набирает )))

    хватит какать в форумах. Read The Fucking Manual
    http://unix-tut.blogspot.com/2008/08/zip.html xD
     
    _________________________
  5. alpotemkin

    alpotemkin Elder - Старейшина

    Joined:
    7 May 2008
    Messages:
    57
    Likes Received:
    1
    Reputations:
    0
    Типичный ответ тех, кому нечего сказать по делу.

    Спасибо за ссылку, но это я уже читал, как и man zip. Лучше бы перечитали мой вопрос.
    Повторяю его для тех, кто в танке:
    1. Скрипт работает. Но пакует файлы с полными путями от корня.
    2. Мне НЕ НУЖНО паковать папку с файлами. А только файлы, которые находятся в подкаталогах, что скрипт и делает.
    3. И вопрос: что дописать, чтобы файлы паковались БЕЗ путей от корня.

    Надеюсь, что больше не будет таких "умных" комментариев. Если нечего ответить по делу, то и не стоит "какать", как ты изволил выразиться.