Архивация через zip списка папок по-отдельности

Архивация через zip списка папок по-отдельности

04.03.2016 06:57:44 Просмотров 18 Источник

Есть список папок:

2014-12-17
2014-12-21
2014-12-22
2014-12-23
2015-01-13
2015-01-14
2015-01-15
2015-01-16
2015-01-17

Как заархивировать папки, названия которых начинаются с "2014" с созданием одного архива, либо, с созданием множества архивов, названия которых совпадают с названием папок? Спасибо.

У вопроса есть решение - Посмотреть?

Ответы - Архивация через zip списка папок по-отдельности / Архивация через zip списка папок по-отдельности

Является ответом!
carapuz

04.03.2016 07:09:07

Запаковать папки, начинающиеся с номера года в архив с именем номера этого года:

#!/bin/bash
for year in {2012..2016}
do
    zip -r $year $year-* >/dev/null 2>&1
done

На выходе - 2012.zip 2013.zip и т.д.

https://ru.stackoverflow.com/questions/499943/%d0%90%d1%80%d1%85%d0%b8%d0%b2%d0%b0%d1%86%d0%b8%d1%8f-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-zip-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0-%d0%bf%d0%b0%d0%bf%d0%be%d0%ba-%d0%bf%d0%be-%d0%be%d1%82%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d0%b8/499947#comment595799_499947
что на выходе будет? я не силён в скриптах. спасибо
https://ru.stackoverflow.com/questions/499943/%d0%90%d1%80%d1%85%d0%b8%d0%b2%d0%b0%d1%86%d0%b8%d1%8f-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-zip-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0-%d0%bf%d0%b0%d0%bf%d0%be%d0%ba-%d0%bf%d0%be-%d0%be%d1%82%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d0%b8/499947#comment595804_499947
а как без вывода добавляемых файлов в консоль? их в каждой папке по 5 тысяч по 150 кб каждый
https://ru.stackoverflow.com/questions/499943/%d0%90%d1%80%d1%85%d0%b8%d0%b2%d0%b0%d1%86%d0%b8%d1%8f-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-zip-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0-%d0%bf%d0%b0%d0%bf%d0%be%d0%ba-%d0%bf%d0%be-%d0%be%d1%82%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d0%b8/499947#comment595825_499947
@mee, об этом написано в man-е к этой программе (можете выполнить команду $ man zip и почитать). опция называется (как и у многих других программ) -q.
https://ru.stackoverflow.com/questions/499943/%d0%90%d1%80%d1%85%d0%b8%d0%b2%d0%b0%d1%86%d0%b8%d1%8f-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-zip-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0-%d0%bf%d0%b0%d0%bf%d0%be%d0%ba-%d0%bf%d0%be-%d0%be%d1%82%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d0%b8/499947#comment596282_499947
А как каждую папку в свой архив?
Jenkamen

05.03.2016 10:31:13

#!/bin/bash
for y in {2016}
do
    for m in {1}
    do
        for d in {1..9}
        do
            zip -r $y-$m-$d $y-0$m-0$d >/dev/null 2>&1
        done

        for d in {10..31}
        do
            zip -r $y-$m-$d $y-0$m-$d >/dev/null 2>&1
        done
    done
done

Сохранил и назвал файл scr.sh Как теперь его запустить?

https://ru.stackoverflow.com/questions/499943/%d0%90%d1%80%d1%85%d0%b8%d0%b2%d0%b0%d1%86%d0%b8%d1%8f-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-zip-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0-%d0%bf%d0%b0%d0%bf%d0%be%d0%ba-%d0%bf%d0%be-%d0%be%d1%82%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d0%b8/500236#comment596304_500236
Добавьте ему права на исполнение chmod +x scr.sh, а запуск ./scr.sh если из той же со скриптом директории, либо через полный путь к нему
https://ru.stackoverflow.com/questions/499943/%d0%90%d1%80%d1%85%d0%b8%d0%b2%d0%b0%d1%86%d0%b8%d1%8f-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-zip-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0-%d0%bf%d0%b0%d0%bf%d0%be%d0%ba-%d0%bf%d0%be-%d0%be%d1%82%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d0%b8/500236#comment599160_500236
ничего не происходит после команды ./scr.sh
Dmitrii

18.04.2016 08:08:32

for i in `ls -1`; do zip $i.zip $i; done
https://ru.stackoverflow.com/questions/499943/%d0%90%d1%80%d1%85%d0%b8%d0%b2%d0%b0%d1%86%d0%b8%d1%8f-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-zip-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0-%d0%bf%d0%b0%d0%bf%d0%be%d0%ba-%d0%bf%d0%be-%d0%be%d1%82%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d0%b8/514353#comment627412_514353
echo `$i` — что, по-вашему, здесь должно произойти? из зачем нужна конструкция `ls -1`, если достаточно лишь *? и где точка с запятой межу for и do? вероятно, вы и не пробовали запускать то, что предлагаете.
https://ru.stackoverflow.com/questions/499943/%d0%90%d1%80%d1%85%d0%b8%d0%b2%d0%b0%d1%86%d0%b8%d1%8f-%d1%87%d0%b5%d1%80%d0%b5%d0%b7-zip-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0-%d0%bf%d0%b0%d0%bf%d0%be%d0%ba-%d0%bf%d0%be-%d0%be%d1%82%d0%b4%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d1%81%d1%82%d0%b8/514353#comment628541_514353
@alexanderbarakin я исправил синтаксическую ошибку, протестировал. для echo $i предполагалось, что будет выведено название каталога, перед архивированием, но на практике выяснилось, что zip умеет отображать вывод того, что было добавлено в архив. выглядит это следующим образом: # adding: 2014-12-22/ (stored 0%)
Закрыть X