Найти и заменить с помощью Sed, а не обычного файла

Найти и заменить с помощью Sed, а не обычного файла

Я работаю над переносимым пакетом Anaconda и пытаюсь использовать find и sed, чтобы найти все файлы и заменить путь внутри файлов в текущем каталоге и его подкаталогах.

Однако при выполнении команды sed выдает ошибку:

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

Я использую следующую команду:

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

Я использую + в качестве разделителя, так как / являются частью пути. Содержимое каталога, в котором я запускаю скрипт, следующее:

drwxr-xr-x 24 test_user linuxusers 4096 21 ноя 16:07 anaconda3

Выполнение команды find само по себе выводит список файлов, как и ожидалось, но по какой-то причине имя каталога все еще выбирается. Я также пробовал следующую вариацию команды, но безуспешно:

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

Я уже успешно использовал find и sed, но я немного в тупике, где искать дальше. Есть ли что-то явно неправильное, что я упускаю здесь, или не так очевидно?

решение1

Удалить «*» из

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

Так

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

Связанный контент