
Я работаю над переносимым пакетом 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" {} \;