Programing

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

lottogame 2020. 12. 5. 09:07
반응형

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


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

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

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


find 명령을 사용합니다.

find . -lname /particular/folder

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

find . -lname '*folder'

거기에서 잘못된 긍정을 제거해야합니다.


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


그러한 심볼릭 링크를 확인하는 직접적인 방법은 없습니다. 항상 마운트되지 않는 파일 시스템 (예 : 외부 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"옵션 중 하나를 사용하여 디렉토리의 inode를 얻을 수 있습니다 ( -i, 제 생각에는).

그런 다음 findwith -inum는 모든 공통 하드 링크를 찾습니다.

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

참고 URL : https://stackoverflow.com/questions/100170/is-there-a-way-to-check-if-there-are-symbolic-links-pointing-to-a-directory

반응형