Como compactar recursivamente os arquivos do subdiretório com senha

Como compactar recursivamente os arquivos do subdiretório com senha

Preciso compactar recursivamente os arquivos do subdiretório com senha e, em seguida, excluir o arquivo descompactado no arquivo bash.

Existem arquivos zip e outros arquivos. Não quero compactar arquivos zip novamente. Desejo apenas compactar arquivos descompactados e manter o nome do arquivo como o nome do arquivo compactado.

Por exemplo, se o nome do arquivo for aaa10.dat, o nome do arquivo zip deverá aaa10.zipser compactado com senha.

Após a compactação, desejo excluir o arquivo descompactado.

[estrutura de diretório]

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

Responder1

Você pode fazer isso com um findcomando bastante complicado, que encontra todos os arquivos “.dat” e os compacta. Mas colocar a parte zip em um script separado é muito mais fácil de mostrar:

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

e my-script(que deve estar no seu PATH):

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

emy-passwordé claro o que você escolheu.

informação relacionada