디렉토리에 모든 심볼릭 링크를 나열하는 방법


145

/var/www/디렉토리에 워드 프레스로 연결 되는 심볼릭 링크 가 있습니다. 디렉토리 에서 명령 ls -la을 실행하면 /var/www/WordPress에 대한 링크가 표시되지 않습니다. 디렉토리에있는 모든 심볼릭 링크를 나열하는 방법이 있습니까?


답변:


80

command grep와 함께 사용 ls하면 현재 디렉토리에있는 모든 심볼릭 링크를 나열 할 수 있습니다 .

현재 디렉토리에있는 모든 링크가 나열됩니다.

ls -la /var/www/ | grep "\->"

5
" ->"가 포함 된 파일이 있으면 오 탐지를 반환합니다 . 간단한 시도touch "foo->"
Sylvain Pineau

7
다른 답변의 내용을 자신의 답변에 복사하여 붙여 넣지 마십시오. -1
αғsнιη

3
grep안와 ^l?
Eliran Malka

3
평소와 같이, 가장 좋은 답변은 +
FractalSpace

좋은! → .bash_alias : alias listlinks='ls -l --color | grep "\->"'8-)
Frank Nocke

283

파싱 ls나쁜 생각입니다 ® , find이 경우 간단한 것을 선호하십시오 :

find . -type l -ls

현재 디렉토리 만 처리하려면 다음을 수행하십시오.

find . -maxdepth 1 -type l -ls

크레딧 : 쉘이`ls -A` 명령에 의해 반환 된 파일 이름을 인식하도록하려면 어떻게합니까?


find: Unknown argument to -type: 1
ahnbizcad

15
@ahnbizcad : 1(하나는 아니지만) l(링크)
Sylvain Pineau

3
좋은 답변입니다! 다음과 같이 디렉토리 경로를 내리지 않도록 조정했습니다. find /<your_directory> -maxdepth 1 -type l -ls 2>/dev/null 감사합니다!
bgs

3
현재 디렉토리 만 (즉, 재귀 적이 지 않은 ) 추가하십시오 -maxdepth 1.
Joshua Pinter

1
@ cig0 u를 사용할 필요는 없습니다 awk. u는 아마도 이것을 원할 것입니다 :find . -maxdepth 1 -type l | sort -n
sobi3ch

10

ls -la명령은 모든 파일과 폴더 및 심볼릭 링크 된 디렉토리를 표시합니다.이 명령에 심볼릭 디렉토리가 표시되지 않으면 워드 프레스에 대한 심볼릭 링크가 없음을 의미합니다 .

실행 결과를 참조하십시오 ls -la:

kasiya@kasiya-pc:~$ cd /sys/devices/platform/sony-laptop
kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ ls -la
total 0
drwxr-xr-x  3 root root    0 Sep  9 19:57 .
drwxr-xr-x 14 root root    0 Sep 10  2014 ..
-r--r--r--  1 root root 4096 Sep  9 22:32 battery_care_health
-rw-r--r--  1 root root 4096 Sep  9 22:32 battery_care_limiter
lrwxrwxrwx  1 root root    0 Sep  9 19:57 driver -> ../../../bus/platform/drivers/sony-laptop
-r--r--r--  1 root root 4096 Sep  9 22:32 modalias
drwxr-xr-x  2 root root    0 Sep  9 22:32 power
lrwxrwxrwx  1 root root    0 Sep  9 22:32 subsystem -> ../../../bus/platform
-rw-r--r--  1 root root 4096 Sep  9 22:32 touchpad
-rw-r--r--  1 root root 4096 Sep  9 19:57 uevent

l권한 플래그를 구걸 할 때 모든 기호 디렉토리에 권한 이 있음을 알 수 있습니다. grep을 사용 ^l하면 기호 파일 또는 디렉토리 만 나열 할 수 있습니다.

kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ ls -la |grep ^l
lrwxrwxrwx 1 root root    0 Sep  9 19:57 driver -> ../../../bus/platform/drivers/sony-laptop
lrwxrwxrwx 1 root root    0 Sep  9 22:32 subsystem -> ../../../bus/platform
kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ 

드라이버서브 시스템 디렉토리는 여기에있는 다른 디렉토리에 대한 심볼릭 링크입니다.


1
사소한 사양은 ... 권한 문자열의 첫 번째 문자는 실제로 권한이 아닙니다. 파일 형식입니다. 당신이 언급했듯이 l그것은 상징적 인 링크입니다.
conner.xyz

5

grep 당신의 친구입니다:

ls -lhaF | grep ^l   # list links
ls -lhaF | grep ^d   # list directories
ls -lhaF | grep ^-   # list files

이 대신에 파마 열에서 링크 대표 "L"로 시작하는 라인이 나열됩니다 l사용 d디렉토리 및 -파일을



1

디렉토리에서 심볼릭 링크를 보려면

  1. 터미널을 열고 해당 디렉토리로 이동하십시오.

  2. 다음 명령을 입력하십시오 :

    ls -la
    

    숨겨져 있어도 디렉토리의 모든 파일을 길게 나열해야합니다.

  3. 로 시작하는 파일 l은 기호 링크 파일입니다.


1
-1 : KasiyA의 답변은 이미 이것을 다루고 있습니다.
muru

1

디렉토리에있는 모든 심볼릭 링크 된 항목 (dirs & fns)을 반환합니다.

find . -maxdepth 1 -type l -print | cut -c3- | grep -v "\#"

그러나 실제 기호로 연결된 항목 유형을 구별하려면 다음을 수행하십시오.

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep -v "/" | cut -d' ' -f1

기호로 연결된 파일 이름 항목 만 반환합니다. 과,

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep "/" | cut -d' ' -f1

심볼릭 링크 된 dirname 항목 만 리턴합니다.


0

유형 ls -lai, 해당하는 inode 번호를 가진 모든 파일 및 하위 디렉토리를 나열합니다. 동일한 inode 번호를 가진 파일은 링크 (하드 또는 소프트)이며이 솔루션은 기호 링크에도 작동합니다.


ls -lai파일 및 해당 심볼릭 링크에 대해 동일한 inode 번호를 표시 하지 않습니다 . 하드 링크와 달리 심볼릭 링크에는 별도의 inode 항목이 있습니다. 이것이 어떻게 생겼는지입니다.
Eliah Kagan

0

파이썬으로도 할 수 있습니다 :

$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /path/to/dir

샘플 실행 :

$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /etc
/etc/vtrgb
/etc/printcap
/etc/resolv.conf
/etc/os-release
/etc/mtab
/etc/localtime

이것은 os.walk함수 를 통해 재귀 적으로 확장 될 수 있지만 위에 표시된 것처럼 단일 디렉토리에 링크를 나열하기 위해 간단한 목록 생성을 사용하는 것으로 충분합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.