GNU encontra arquivos .extension e -exec, enquanto novos arquivos .extension estão sendo criados

GNU encontra arquivos .extension e -exec, enquanto novos arquivos .extension estão sendo criados

Aqui está um problema, alguém pode explicar ou fornecer algumas referências. Estou tentando ler há uma hora, mas não consigo encontrar a resposta.

Suponha que eu tenha o processo1 em um conjunto de diretórios. process1 escolhe um diretório e cria, digamos, arquivos .csv dentro dele. Os arquivos .csv estão sendo anexados e, portanto, incompletos enquanto o processo1 continua neste, digamos, diretório1. process1 então passa para o diretório2 e assim por diante.

Agora, quero fazer algo com csvs nos diretórios com os quais o process1 foi finalizado. Idealmente, eu deveria verificar quais diretórios foram concluídos e executar o process2 neles. Mas na minha infinita sabedoria, faço o seguinte:

encontre diretórios* -type f -name '*.csv' -exec process2

Minha suposição era que find encontrará primeiro todos os csvs existentes até o ponto de invocação de find e então -exec process2 apenas naqueles, ignorando quaisquer csvs que tenham sido feitos após a invocação de find.

Parece que eu estava errado (ainda não tenho certeza). Alguém pode explicar, por favor?

Obrigado.

Responder1

A maneira como findfunciona -exec é que o processo exec é chamado à medida que cada arquivo é encontrado. Se você quiser trabalhar a partir de um instantâneo, provavelmente será melhor fazer algo assim:

find directories* -type f -name '*.csv' > /tmp/filelist
cat /tmp/filelist | while read file; do 
  process2 $file # I'm assuming you want to pass the filename somehow...
done;

Novamente, você ainda não tem ideia de quais estão realmente sendo gravados, então você terá que resolver isso separadamente.

informação relacionada