Como passar arquivos encontrados repetidamente para serem originados por script

Como passar arquivos encontrados repetidamente para serem originados por script

Estou encontrando arquivos que não terminam com .done assim:

find -type f -not -name \*.done -execdir myscript {} \;

Agora, o que eu quero fazer é o seguinte:

-passar cada arquivo encontrado para myscript

-source cada arquivo em myscript com o comando source

-run myscript para cada arquivo de origem

Nota: quero executar o myscript repetidamente, uma vez para cada arquivo encontrado. Não quero executar o myscript para vários arquivos simultaneamente. Então, essencialmente, estou tentando fazer um loop nos arquivos encontrados e obtê-los no myscript. Como posso fazer isso?

Responder1

Seu findcomando é executado myscriptpara cada arquivo encontrado, passando o nome do arquivo como o primeiro argumento da linha de comando para myscript.

Você deseja obter o arquivo em myscript, então myscriptdeve incluir isso em seu código:

. ./"$1"

Notas:

  • Presumo myscriptque seja interpretado por um shell.
  • Você mencionou source, mas .é mais portátil.
  • Eu usei ./"$1"porque você usou -execdir.Parecealgumas implementações de findnão incluem ./na string substituída por {}after -execdir. Se este fosse o caso, entãoeste acidentepoderia acontecer. Adicionar um explícito ./evita isso.

informação relacionada