Ignore o arquivo _load

3

Eu tenho um requisito onde uma vez que um arquivo é carregado, eu crio um arquivo _load para isso. para ex: - se temp_20180101.txt é carregado, eu crio temp_20180101.txt_load para isso.

Agora, na próxima execução, queria ignorar todos os arquivos cujo _load está presente no diretório e escolher o arquivo mais recente disponível.

Por favor, informe como fazer isso em um comando linux

    
por puneet gupta 25.01.2018 / 11:03

1 resposta

2

Primeiro exemplo (busca recursivamente arquivos, com find ):

find . -type f -name 'temp_*.txt' -exec sh -c '[ ! -e "$0"_load ]' {} ';' -print

Isso produzirá os nomes de todos os arquivos regulares no diretório atual (ou abaixo) que correspondem ao padrão temp_*.txt , mas que não possui um arquivo temp_*.txt_load correspondente associado a ele. O carregamento poderia então ser feito por outro -exec no lugar do -print .

Segundo exemplo (loop de shell mais simples e explícito):

for name in ./temp_*.txt; do
    if [ -f "$name" ] && [ ! -e "$name"_load ]; then
        command_to_load "$name"
        touch "$name"_load
    fi
done

Este é um loop de shell explícito que examina apenas os arquivos no diretório atual. Se o nome correspondente for um arquivo normal e se não houver nenhum arquivo _load correspondente associado, algum comando para carregar $name será invocado e o arquivo _load será criado.

Alguém pode querer usar

command_to_load "$name" && touch "$name"_load

dentro da if -statement para criar apenas o arquivo _load se o carregamento foi bem.

    
por 25.01.2018 / 11:39