모든 링크를 실제 파일로 재귀적으로 교체(gnu)

모든 링크를 실제 파일로 재귀적으로 교체(gnu)

Linux 파일에서 Code dx를 실행하려면 모든 링크를 실제 파일로 바꿔야 합니다. Linux에서 일한 지 수년이 지났고 용어가 혼란스럽습니다. 지난 이틀 동안 답을 찾고 있었습니다. 간단한 스크립트가 있나요? 2,500만 줄의 코드가 있습니다.

원래 디렉터리: afile bfile clink_to_cfile_in_another_dir (여러 링크를 통과할 수도 있음)

원하는 최종 결과: afile bfile cfile

이 작업을 수행했지만 아직 제대로 작동하지 않습니다.

find . -type l -exec "echo 'replacing {}'; cp -LR '{}' '{}'.deref rm '{}' \;"

답변1

몇 가지 질문이 있습니다

  • 따옴표 외부에는 필수 \;이며, exec에 대한 별도의 매개변수입니다.
  • ;마지막 rm 명령 앞에 a가 누락되었습니다.
  • exec는 전체 명령을 하나의 명령으로 실행하려고 시도합니다.

이와 같은 여러 명령을 실행하려면 셸을 실행하고 스크립트에 전달할 수 있습니다.

find . -type l -exec /bin/bash -c "echo 'replacing {}'; cp -LR '{}' '{}.deref' ; rm '{}'" \;

작동하는 것 같습니다.

관련 정보