디렉토리를 가리키는 심볼릭 링크가 있는지 확인하는 방법이 있습니까?
내 서버에 여러 심볼릭 링크가있는 폴더가 있습니다. 이후 새 폴더를 만들었으며 모든 심볼릭 링크를 새 폴더를 가리 키도록 변경하고 싶습니다. 원래 폴더를 새 폴더에 대한 심볼릭 링크로 바꾸는 것을 고려했지만 그 연습을 계속하면 매우 지저분해질 수 있습니다.
내가 한 일은 새 폴더를 가리 키도록 심볼릭 링크를 수동으로 변경하는 것이지만 몇 가지를 놓쳤을 수 있습니다.
특정 폴더를 가리키는 심볼릭 링크가 있는지 확인하는 방법이 있습니까?
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
, 제 생각에는).
그런 다음 find
with -inum
는 모든 공통 하드 링크를 찾습니다.
소프트 링크의 경우 ls -l
모든 파일에서 "->"뒤의 텍스트를 찾아 정규화하여 절대 경로인지 확인해야 할 수 있습니다.
'Programing' 카테고리의 다른 글
C ++ 열거 형 클래스의 요소 수를 확인할 수 있습니까? (0) | 2020.12.05 |
---|---|
Firefox 확장을 개발하는 가장 쉬운 방법은 무엇입니까? (0) | 2020.12.05 |
PuTTY로 로그인 한 세션간에 파일 전송 (0) | 2020.12.04 |
Smali를 배우는 가장 좋은 방법은 무엇입니까 (그리고 Dalvik VM opcode를 사용하는 방법 / 시점)? (0) | 2020.12.04 |
SQLDEVELOPER에서 백그라운드 프로세스가 완료되었는지 확인하는 방법 (0) | 2020.12.04 |