저는 휴대용 아나콘다 패키지를 개발 중이며 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 11월 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" {} \;