simple_math
@simple_math

Как проводить архивирование командой zip в Linux?

Как из консоли осуществить такую штуку.

Например, у меня в папке лежит три файла:
file1.txt
file2.txt
file3.txt

Надо просто рядом с ними создать их архивы с сохранением имен, типа:
file1.txt
file1.zip
file2.txt
file2.zip
file3.txt
file3.zip

Я туплю
  • Вопрос задан
  • 3089 просмотров
Решения вопроса 1
iandriyanov
@iandriyanov
Если совсем как в примере то вот:

for i in $(ls *.txt | sed -e 's/\.[a-Az-Z]*$//'); do echo "file name $i.zip"; zip -9 $i.zip $i.txt; done

Если иначе. То нужно командочку подтюнить. Смысл в команде такой.

ls бежит по каталогу и передает в трубе все что найдет с расширением .txt программе редактору sed. Sed по средством регульрных выражений обрежает расширения для того чтобы оставить имена файлов, для их дальнейшего использования.
Все это дело в цикле приводит к тому что в перменную $i подставляется то что выполняется в команде $() в начале строки (это истоки shell). И формируется строка на выполнение.

Тут получается так:
zip -9 1.zip 1.txt
zip -9 2.zip 2.txt
....
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
cjey
@cjey
Нет под рукой линукса чтобы проверить но вы можете использовать цикл.
(Должно получиться что-то вроде)

for i in `ls *.txt`; do zip $i > $i.zip; done
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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