Как я могу сжать несколько пар файлов в отдельные архивы по имени?

У меня есть пара дюжины наборов папок проекта Смелости и .aup файлов проекта, имена которых очень близки, т.е. 10-13-14-data и 10-13-14.aup. Я хотел бы сжать все эти файлы автоматически через командную строку к отдельным zip (названный, например, 10.13.14.zip), вместо того, чтобы пройти полный набор и сжать каждого (который должен был быть сделан первоначально).

Я делаю это, потому что я хотел бы узнать больше, как использовать CLI и надо надеяться продолжить извлекать уроки из AskUbuntu. Я мог просто пройти количество файлов/папок, которые я должен архивировать вместе, но я пользуюсь возможностью, чтобы быть терпеливым и изучить что-то новое вместо этого.Спасибо!

2
задан 14 October 2014 в 00:21

2 ответа

Вы можете использовать цикл for в родительском каталоге каталогов, содержащих файлы, например

for f in */*; do 
    zip "${f%.*}".zip "${f%.*}.data" "${f%.*}.aup"
    echo mv -v -- "${f%.*}".zip /media/user/folder/$(basename "${f/.*/.zip}")      
done

удалить echo после тестирования и запустить снова, чтобы фактически переместить файлы потребуется заменить его на sudo в этом случае).

2
ответ дан 6 October 2019 в 23:36

Мне удалось (с большим количеством справки от моего папы), придумать это.

dates=`ls *.aup | sed 's/\(.*\).aup/\1/'`
for i in $dates; do zip -r $i $i*
mv $i /media/user/folder
done

я не полностью понимаю это сам, но это в настоящее время работает; если кто-то захочет объяснить, как я просто решил свою собственную проблему, я буду ценить ее от имени тех, кто находит этот вопрос/ответ в будущем; благодарит пытаться помочь, те, кто сделал!

0
ответ дан 6 October 2019 в 23:36

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

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