A substituição de comandos, que significa usar o resultado de um comando para algo in-line, é feita com $( ... )
.
No seu caso,
core_out=$( find coretst.* )
No entanto, isso solicitará que find
procure em todos os caminhos que iniciam com qualquer coisa para a qual coretst.*
se expande. O que eu suponho que você quer fazer é procurar no diretório atual ou abaixo por arquivos que corresponda ao padrão coretst.*
. Você faria isso com
core_out=$( find . -type f -name 'coretst.*' )
A citação do padrão coretst.*
impede que o shell seja expandido para nomes no diretório atual.
Então, é uma questão o que você gostaria de fazer com os nomes de caminho retornados por isso. Se você quiser apenas imprimi-los, não há necessidade da variável:
find . -type f -name 'coretst.*'
Se você quiser remover esses arquivos, faça isso em find
:
find . -type f -name 'coretst.*' -exec rm {} +
Qualquer outra operação nos arquivos também pode ser executada em find
.
Veja a pergunta " Por que o loop está causando a saída incorreta Pratique? "por razões pelas quais usar os caminhos que find
retorna pode ser um mau hábito (as respostas são sobre o resultado de find
, que é o que eu presumo que você queira fazer mais tarde) .
Dos comentários:
I want to search it in a current folder, and the output on this will be used on a substring and consequently will be used on this:
strings ($core_out) | grep "pmdtm("
Se eu entendi isso corretamente, isso pode ser feito com
find . -type f -name 'coretst.*' -exec strings {} + | grep -F 'pmdtm('
Ou seja, execute strings
em todos os arquivos encontrados e localize as linhas que contêm a string pmdtm(
.
Se você quiser saber em qual arquivo a correspondência foi encontrada:
find . -type f -name 'coretst.*' -exec sh -c '
for name; do
if strings "$name" | grep -qF "pmdtm("; then
printf "%s\n" "$name"
fi
done' find-sh {} +