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.zip
ser 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 find
comando 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.