디렉토리를 가리키는 심볼릭 링크가 있는지 확인하는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/100170

  •  01-07-2019
  •  | 
  •  

문제

내 서버에는 여러 기호 링크가 가리키는 폴더가 있습니다.이후 새 폴더를 만들었고 새 폴더를 가리키도록 모든 심볼릭 링크를 변경하고 싶습니다.원래 폴더를 새 폴더에 대한 심볼릭 링크로 바꾸는 것을 고려했지만 계속해서 연습하면 매우 빨리 지저분해질 수 있는 것 같습니다.

내가 한 일은 새 폴더를 가리키도록 심볼릭 링크를 수동으로 변경하는 것이었지만 몇 가지를 놓쳤을 수도 있습니다.

특정 폴더를 가리키는 심볼릭 링크가 있는지 확인하는 방법이 있습니까?

도움이 되었습니까?

해결책

find 명령을 사용하겠습니다.

find . -lname /particular/folder

그러면 현재 디렉토리에서 다음에 대한 심볼릭 링크를 재귀적으로 검색합니다. /particular/folder.절대 심볼릭 링크만 찾습니다.비슷한 명령을 사용하여 "폴더"라는 개체를 가리키는 모든 심볼릭 링크를 검색할 수 있습니다.

find . -lname '*folder'

여기에서 거짓 긍정을 제거해야 합니다.

다른 팁

다음을 사용하여 심볼릭 링크를 감사할 수 있습니다. 그만큼 symlinks 프로그램 Mark Lord가 작성 - 전체 파일 시스템을 스캔하고 심볼릭 링크 경로를 절대 형식으로 표준화한 후 stdout으로 인쇄합니다.

실제로 이러한 심볼릭 링크를 확인할 수 있는 직접적인 방법은 없습니다.항상 마운트되지 않는 파일 시스템이 있을 수 있다는 점을 고려하십시오(예:외부 USB 드라이브), 여기에는 시스템의 다른 볼륨에 대한 심볼릭 링크가 포함될 수 있습니다.

다음을 사용하여 뭔가를 할 수 있습니다:

for a in `find / -type l`; do echo "$a -> `readlink $a`"; done | grep destfolder

나는 FreeBSD의 find 을 지원하지 않습니다 -lname 옵션이 있기 때문에 위와 같은 결과가 나왔습니다.

find . -type l -printf '%p -> %l\n'

원본 폴더를 가리키는 링크가 있으면 다른 모든 폴더를 보는 것 외에는 불가능하다고 생각합니다.만약 그렇다면, 나는 관심을 가질 것입니다.

find / -lname 'fullyqualifiedpathoffile'
find /foldername -type l -exec ls -lad {} \;

하드링크의 경우 "ls" 옵션(-i, 제 생각에는).

그 다음에 find ~와 함께 -inum 모든 공통 하드링크를 찾습니다.

소프트링크의 경우 다음을 수행해야 할 수도 있습니다. ls -l 모든 파일에서 "->" 뒤의 텍스트를 찾고 정규화하여 절대 경로인지 확인합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top