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 find
comando é executado myscript
para 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 myscript
deve incluir isso em seu código:
. ./"$1"
Notas:
- Presumo
myscript
que seja interpretado por um shell. - Você mencionou
source
, mas.
é mais portátil. - Eu usei
./"$1"
porque você usou-execdir
.Parecealgumas implementações defind
não incluem./
na string substituída por{}
after-execdir
. Se este fosse o caso, entãoeste acidentepoderia acontecer. Adicionar um explícito./
evita isso.