우리는 루트 디렉토리부터 시작하여 모든 심볼릭 링크 정보를 인쇄하는 데 관심이 있습니다. 우리는 다음 형식으로 정보를 인쇄하려고 합니다.
symbolic name -> actual name
[같은 줄에 주목]
우리는 다음을 시도했고 상징적인 이름과 실제 이름을 얻었습니다.하지만 다른 라인에서:
find . -type l -print -exec readlink -f {} \;
답변1
나는 당신이 멀리 있다고 생각하지 않습니다. -printf
대신 사용하면 -print
(귀하의 버전 find
에 해당한다고 가정) 다음과 같은 결과를 얻을 수 있습니다.
find / -type l -printf "%p -> " -exec readlink -f {} \;
출력 예
/bin/apropos -> /bin/whatis
/bin/awk -> /bin/gawk
/bin/bzcmp -> /bin/bzdiff
참고로,
ls -gl /bin/apropos
lrwxrwxrwx 1 roaima 10 Mar 28 20:15 /bin/apropos -> whatis
끊어진 링크의 경우 -printf
줄 바꿈 없이 쿵쿵거리는 줄을 얻게 됩니다.
답변2
그리고 zsh
:
for link (**/*(ND@^-@)) print -r -- "$link -> $link:P"
여기서 @^-@
glob 확장은 손상되지 않은 기호 링크 파일(대상에 액세스할 수 있는 기호 링크, 표준 경로를 결정하는 데 필요하며 GNU와 동일)로 제한 find
됩니다 -type l ! -xtype l
. $link:P
링크의 실제 경로를 제공합니다( realpath()
표준 함수 또는 GNU가 수행하는 것과 유사하게 모든 구성 요소 기호 링크가 해결된 후의 정식 절대 경로 readlink -f
).