Primeiro, localize todos os arquivos que contenham Linux.Secret =
no início de uma linha:
find . -type f -exec grep -q '^Linux.Secret =' {} ';'
Observe que grep -q
não produz nada, apenas sai com um status dependendo se a expressão pode ser correspondida ou não.
Em seguida, para todos os arquivos que passam nesses testes (é um arquivo regular e contém esse texto), executamos um comando simples (GNU) sed
:
find . -type f -exec grep -q '^Linux.Secret =' {} ';' \
-exec sed -i "s/^Linux.Secret =.*/Linux.Secret = 'NewSecret'/" {} +
Isso faz a mudança no local nos arquivos, substituindo toda a linha pela linha que gostaríamos de ter. Nós lidamos com aspas simples usando aspas duplas em torno das expressões que exigem isso.
Se você precisar ser mais cuidadoso com a correspondência e corresponder apenas a Linux.Secrets =
seguido por algo entre aspas simples:
find . -type f -exec grep -E -q "^Linux.Secret = '[^']+'" {} ';' \
-exec sed -E -i "s/^Linux.Secret = '[^']+'.*/Linux.Secret = 'NEWSECRET'/" {} +
Relacionados: