linux pesquisando vários arquivos com o mesmo prefixo e enviando apenas nomes de arquivos em um e-mail [fechado]

0

estamos usando o shell korn .. o req é 2 trabalhos informatica criam 4 arquivos com tstamp (cada trabalho infa cria 2 arquivos), então vamos dizer nomes de arquivos 1.ttmm_rels_prspt.ctl_tstamp 2.ttmm_rels_prspt.lsf_tstamp 3. ttmm_rels_rfc.ctl_tstamp 4 ttmm_rels_rfc.scf_tstamp .. então os arquivos são criados no seguinte caminho opt / etl / tgtfiles. ttmm_rels é o prefixo comum para 4 arquivos .. se 4 arquivos criados no servidor nós temos que enviar um e-mail dizendo sucesso com nomes de arquivos. e arquivos devem renomear para procesd_filename. Assim, no dia seguinte, não obteremos os mesmos arquivos no servidor, pois renomeamos para processados. se 1 trabalho infa falhar, haverá apenas 2 arquivos no servidor. então envie um e-mail de sucesso com 2 nomes de arquivos e renomeie para processd para esses 2 arquivos também para outros 2 arquivos envie e-mail de atraso (se um trabalho de infa falhar no total 2 e-mails que enviarmos) email e renomeie os nomes dos arquivos para processd_filename

    
por vani 09.02.2017 / 21:36

1 resposta

1

Assumindo bash :

shopt -s nullglob
files=( ttmm_rels* )

if [[ -n "$files" ]]; then
  msg="$(printf '%s\n' "${files[@]}")"
  subj="Success"
else
  msg="Sorry, no files yet"
  subj="Delay"
fi

printf '%s\n' "$msg" | mail -s "$subj" [email protected]

Para ksh93 , que não possui a opção nullglob shell, você terá que testar se o padrão globbing corresponde a alguma coisa:

files=( ttmm_rels* )

if [[ "${#files}" == 1 && "$files" == "tmm_rels*" && ! -f "ttmm_rels*" ]]; then
  msg="Sorry, no files yet"
  subj="Delay"
else
  msg="$(printf '%s\n' "${files[@]}")"
  subj="Success"
fi

printf '%s\n' "$msg" | mail -s "$subj" [email protected]
    
por 09.02.2017 / 22:15

Tags