У меня есть пара дюжины наборов папок проекта Смелости и .aup файлов проекта, имена которых очень близки, т.е. 10-13-14-data и 10-13-14.aup. Я хотел бы сжать все эти файлы автоматически через командную строку к отдельным zip (названный, например, 10.13.14.zip), вместо того, чтобы пройти полный набор и сжать каждого (который должен был быть сделан первоначально).
Я делаю это, потому что я хотел бы узнать больше, как использовать CLI и надо надеяться продолжить извлекать уроки из AskUbuntu. Я мог просто пройти количество файлов/папок, которые я должен архивировать вместе, но я пользуюсь возможностью, чтобы быть терпеливым и изучить что-то новое вместо этого.Спасибо!
Вы можете использовать цикл 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
в этом случае).
Мне удалось (с большим количеством справки от моего папы), придумать это.
dates=`ls *.aup | sed 's/\(.*\).aup/\1/'`
for i in $dates; do zip -r $i $i*
mv $i /media/user/folder
done
я не полностью понимаю это сам, но это в настоящее время работает; если кто-то захочет объяснить, как я просто решил свою собственную проблему, я буду ценить ее от имени тех, кто находит этот вопрос/ответ в будущем; благодарит пытаться помочь, те, кто сделал!