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

2

Estou trabalhando em um pacote anaconda portátil e estou tentando encontrar o find e o sed para encontrar todos os arquivos e substituir um caminho dentro dos arquivos dentro do 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 o + como o delimitador, pois o / faz parte do caminho. O conteúdo do diretório no qual estou executando o script é:

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

A execução do comando find por conta própria lista os arquivos como esperado, mas, por algum motivo, o nome do diretório está sendo selecionado ainda. Eu também tentei a seguinte variação do comando sem sucesso:

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

Eu usei o find e sed com sucesso antes, mas estou um pouco perplexo aonde procurar a seguir. Existe alguma coisa que obviamente errado que eu estou sentindo falta aqui, ou não tão óbvio?

    
por Glenak1911 21.11.2017 / 18:01

1 resposta

4

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" {} \;
    
por 21.11.2017 / 18:07

Tags