Como compactar recursivamente os arquivos do subdiretório com senha

0

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

Existem arquivos zip e outros arquivos. Eu não quero compactar arquivos zip novamente. Eu só quero 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 deve aaa10.zip e compactá-lo com senha.

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

[estrutura de diretórios]

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
    
por user2952980 18.05.2015 / 02:47

1 resposta

0

Você pode fazer isso com um comando find razoavelmente complicado, que localiza todos os arquivos ".dat" e depois os fecha. Mas colocar a parte do zip em um script separado é muito mais fácil de mostrar:

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

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

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

e my-password é claro o que você escolheu.

    
por 18.05.2015 / 12:58