이 문제현재 디렉터리 내에서 디렉터리 찾기에 대해 설명합니다. 해결책은 기본적으로 다음과 같습니다.
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'
그러면 모든 심볼릭 링크 파일이 재귀적으로 나열됩니다. 또한 가리키는 실제 파일도 표시됩니다.