Em primeiro lugar, não faça um loop pela saída de find
. Em vez disso, use find
para executar seu comando. Isso garante que os nomes de arquivos não fiquem desconfigurados. Pelo mesmo motivo, você precisa citar suas expansões variáveis .
mkdir -p "/md5check/$date/PD1"
find /oracle/PD1/sapbackup/b*/ -type f -newermt "$date" -exec sh '
for pathname do
printf "file = %s\n" "$pathname"
openssl md5 -binary "$pathname" | base64
done' sh {} + >"/md5check/$date/PD1/md5local.txt"
Isso localizaria qualquer arquivo regular dentro ou abaixo de qualquer um dos diretórios /oracle/PD1/sapbackup/b*/
que tivessem um registro de data e hora de modificação mais recente que $date
. Para esses arquivos, um script curto é executado. O script imprime o nome do caminho do arquivo junto com a soma de verificação MD5 codificada em base64. A saída de find
vai para o arquivo indicado no final.
O redirecionamento para o arquivo de saída poderia obviamente ser feito com >>
dentro do script, mas isso significaria ter que abrir o arquivo de saída para gravar mais de uma vez (também, $date
não está disponível lá). / p>
Veja também: