현재 디렉토리의 심볼릭 링크를 나열하시겠습니까?

현재 디렉토리의 심볼릭 링크를 나열하시겠습니까?

이 문제현재 디렉터리 내에서 디렉터리 찾기에 대해 설명합니다. 해결책은 기본적으로 다음과 같습니다.

ls -d */

괜찮습니다. 하지만 심볼릭 링크를 쉽게 나열하려면 어떻게 해야 합니까? 다음과 같은 것을 사용해야합니까?

find . -xtype l -d 1
(intended to find symlinks max depth 1 - doesn't work)

아니면 더 쉬운 방법이 있나요? 이 작업을 수행하는 데 사용할 수 있습니까?

답변1

zsh에서( N이름이 a로 시작하는 심볼릭 링크를 포함하려면 괄호 안에 추가 .):

echo *(@)

find대부분의 구현 에서는 다음을 수행합니다 .

find -maxdepth 1 -type l

POSIX 준수:

find . -type d \! -name . -prune -o -type l -print

또는 쉘 루프를 사용하십시오.

for x in * .*; do
  if [ -h "$x" ]; then echo "$x"; done
done

답변2

맥에서는 안되지만

find . -maxdepth 1 -type l

나를 위해 작동합니다.

답변3

-type대신에 다음 을 사용해야 합니다 -xtype:

   -xtype c
          The same as -type unless the file is a symbolic link.  For  sym‐
          bolic  links:  if the -H or -P option was specified, true if the
          file is a link to a file of type c; if the -L  option  has  been
          given,  true  if  c is `l'.  In other words, for symbolic links,
          -xtype checks the type of the file that -type does not check.

기본값은 -P이므로 -xtype 옵션은 심볼릭 링크 자체가 아닌 결과 파일을 결정하려고 시도합니다. 실제로 긍정적인 결과를 얻고 있는데 이는 버그인 것 같습니다. -P -xtype l결과 자체가 심볼릭 링크인 경우에만 (심볼릭링크에서) true를 반환해야 합니다.

또한 사용 가능합니다. ls -FA | sed -ne 's/@//p'심볼릭 링크만 표시됩니다.

답변4

현재 디렉토리에서 심볼릭 링크된 파일만 찾으려면:

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

그러면 모든 심볼릭 링크 파일이 재귀적으로 나열됩니다. 또한 가리키는 실제 파일도 표시됩니다.

관련 정보