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

0

Вы можете сделать это с помощью довольно сложной команды 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 конечно, все, что вы выбрали.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .