Мне нужно рекурсивно сжать файлы подкаталога с паролем, а затем удалить несжатый файл в файле 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
конечно, все, что вы выберете.