참조 파일을 Symlink로 교체

참조 파일을 Symlink로 교체

다른 폴더 내의 파일 및 폴더에 대한 심볼릭 링크가 필요한 파일 및 폴더가 있는 작업 중인 git repo가 ​​있습니다. 모든 심볼릭 링크는 두 번째 프로젝트 폴더의 텍스트로 참조됩니다. 저는 모든 심볼릭 링크를 자동으로 설정하는 방법을 알고 싶습니다.

예제 구조

project1/

---- myfile.rb

---- myfolder/

project2/

---- myfile.rb

---- myfolder


그리고 파일에프로젝트2/myfile.rb라인 1에는 다음 텍스트만 포함됩니다.

../project1/myfile.rb

그리고프로젝트2/내 폴더텍스트만 포함

../project1/myfolder

이는 파일 구조 전체에서 반복됩니다. 또 다른 예는 다음과 같습니다.

프로젝트2/app.rb텍스트가 있습니다

../project2/app.rb

나는 우분투에 있고 이것을 자동화된 방식으로 진행하고 수동으로 각 심볼릭 링크를 찾는 대신 심볼릭 링크를 설정하는 방법이 있다고 생각합니다.

답변1

git은 심볼릭 링크 버전을 관리할 수 없으므로 이러한 파일보다는 심볼릭 링크 버전 관리를 고려하세요. 또한 두 저장소 사이에 실제 관계가 있도록 git 하위 모듈을 고려할 수도 있습니다.

귀하의 질문/설정이 올바르게 되었다면 이것이 효과가 있을 수 있습니다. 줄 수가 1 인 폴더에서 파일을 (재귀적으로) 검색하고 ./project2대상이 존재하는 경우 해당 파일을 해당 파일에 대한 링크로 바꿉니다.

#!/bin/bash

for file in $(find project2/ -type f )
do
  linecount=$(wc -l $file | awk '{print $1}')
  if [ $linecount -eq 1 ]; then
    target=$(cat $file)
    relTarget=$(dirname $file)/$target
    if [ -f $relTarget ] || [ -d $relTarget ]; then
      rm $file
      ln -s $target $file
    fi
  fi
done

답변2

디렉터리 내부에서 다음을 실행합니다 project2.

for file in *; do
    link="$(cat "$file")"
    rm "$file"
    ln -s "$link" "$file"
done

이는 재귀적이지 않으므로 하위 디렉터리를 조사하지 않습니다.

관련 정보