
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" {} \;