Encontre e substitua por Sed, não por um arquivo normal

Encontre e substitua por Sed, não por um arquivo normal

Estou trabalhando em um pacote anaconda portátil e estou tentando usar find e sed para localizar todos os arquivos e substituir um caminho dentro dos arquivos no diretório atual e seus subdiretórios.

Quando executo o comando, no entanto, sed gera o erro:

sed: couldn't edit anaconda3: not a regular file

O comando que estou usando é:

find ./ -type f -exec sed -i -e "s+/opt/conda_tools+$TOOLKIT_DIR+g" * {} \;

Estou usando + como delimitador, pois / faz parte do caminho. O conteúdo do diretório em que estou executando o script é:

drwxr-xr-x 24 test_user linuxusers 4096 21 de novembro 16:07 anaconda3

A execução do comando find por si só lista os arquivos conforme o esperado, mas por algum motivo o nome do diretório ainda está sendo escolhido. Também tentei a seguinte variação do comando sem sucesso:

find ./ -type f -exec sed -i '' "s+/opt/conda_tools+$INSTALL_DIR+g" * {} \;

Já usei find e sed com sucesso antes, mas estou um pouco perplexo sobre onde procurar em seguida. Há algo obviamente errado que estou perdendo aqui ou não tão óbvio?

Responder1

Remova o '*' de

find ./ -type f -exec sed -ie "s+/opt/conda_tools+$TOOLKIT_DIR+g" * {} \;

Então

find ./ -type f -exec sed -ie "s+/opt/conda_tools+$TOOLKIT_DIR+g" {} \;

informação relacionada