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

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

Мне нужно рекурсивно сжать файлы подкаталога с паролем, а затем удалить несжатый файл в файле bash.

Есть zip-файлы и другие файлы. Я не хочу снова сжимать zip-файлы. Я хочу сжимать только несжатые файлы и сохранять имя файла как имя сжатого файла.

Например, если имя файла — , aaa10.datто необходимо указать имя zip-файла aaa10.zipи сжать его с помощью пароля.

После сжатия я хочу удалить несжатый файл.

[структура каталогов]

dir1/aaa1.dat ... aaa10.dat
dir1/dir2/dir2_subdir1/aaa.zip, aaa.dat
dir1/dir3/dir3_subdir1/aaa1.dat ... aaa10.dat
dir1/dir3/dir3_subdir2/aaa1.dat ... aaa20.dat, aaa1.zip ... aaa10.zip
dir1/dir3/dir3_subdir2/dir3_subdir2_subdir1/aaa1.dat ... aaa20.dat, aaa1.zip ... aaa10.zip

решение1

Это можно сделать с помощью довольно сложной findкоманды, которая находит все файлы ".dat" и затем архивирует их. Но поместить часть zip в отдельный скрипт гораздо проще для демонстрации:

find . -name '*.dat' -exec my-script {} \;

и my-script(что должно быть в вашем PATH):

#!/bin/sh
zip -P my-password -m $(dirname $1)/$(basename $1 .dat).zip $1

иmy-passwordконечно, все, что вы выберете.

Связанный контент