루트 디렉토리에서 시작하여 전체 심볼릭 링크 정보를 인쇄합니다.

루트 디렉토리에서 시작하여 전체 심볼릭 링크 정보를 인쇄합니다.

우리는 루트 디렉토리부터 시작하여 모든 심볼릭 링크 정보를 인쇄하는 데 관심이 있습니다. 우리는 다음 형식으로 정보를 인쇄하려고 합니다.
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).

관련 정보