symlink 디렉토리의 파일을 포함하여 디렉토리의 모든 파일을 재귀 적으로 나열


147

내가 디렉토리가 있다고 가정 /dir다른 디렉토리에 3 심볼릭 링크가있는 내부를 /dir/dir11, /dir/dir12하고 /dir/dir13. 나는 모든 파일을 나열 할 dir에있는 사람을 포함 dir11, dir12하고 dir13.

좀 더 일반적으로, 심볼릭 링크 인 디렉토리의 파일을 포함하여 모든 파일을 나열하려고합니다. find .,, ls -R등은 추가 링크를 탐색하지 않고 심볼릭 링크에서 중지합니다.


답변:


232

원하는 것을 성취 할 수 있는 -L옵션 ls. 기호 링크를 역 참조합니다.

따라서 귀하의 명령은 다음과 같습니다.

ls -LR

당신은 또한 이것을 달성 할 수 있습니다

find -follow

-follow옵션은 find가 디렉토리에 대한 심볼릭 링크를 따르도록 지시합니다.

Mac OS X에서 사용

find -L

-follow사용되지 않습니다.


14
-follow는 최신 버전의 find에서 -L을 위해 사용되지 않습니다.
pjz

@pjz : '-follow deprecated에 대한 상호 참조가 있습니까? -L '을 사용 하시겠습니까? 나는 놀랍게도 opengroup.org/onlinepubs/009695399/toc.htm 의 POSIX / SUS 표준에 '-L'과 '-H'가 있으며 , '-follow'가 없다는 것은 놀랍습니다. 그래서 나는 내 자신의 질문에 대답했다.
Jonathan Leffler

이것은 나를 위해 작동하지 않았다. 처음에는 아무 일도 일어나지 않았지만 시도해 보았습니다 -follow. 폴더를 찾을 수 없다는 메시지가 표시되었습니다.ollow
smatthewenglish

4
OS X 10.10에서는 다음과 같이 작동합니다. find -L .— @ S.Matthew_English와 같은 문제가있었습니다
fregante

귀하의 답변은 좋지만 follow디렉토리 경로가 아닌 파일 경로 (파일의 전체 경로) 만 원합니다 . 어떻게 할 수 있습니까?
Vicky Dev

116

방법에 대한 트리 ? tree -l심볼릭 링크를 따릅니다.

면책 조항 : 나는이 패키지를 썼다.


2
아치 패키지는 어떻습니까?
Mr_and_Mrs_D

이것은보다 직관적 인 견해 ls입니다. 붙여 넣기가 더 쉽습니다.
dhaupin

46
find /dir -type f -follow -print

-type f 실제 파일을 표시 함을 의미합니다 (symlinks 아님).

-follow 그것은 당신의 디렉토리 symlinks를 따를 것임을 의미합니다

-print 파일 이름을 표시합니다.

ls 유형 표시를 원하면 다음을 수행 할 수 있습니다

find /dir -type f -follow -print|xargs ls -l

이것은보다 더 예쁜 디스플레이 생산 ls -L옵션
eusoubrasileiro

10

ls 사용 :

  ls -LR

'man ls'에서 :

   -L, --dereference
          when showing file information for a symbolic link, show informa‐
          tion  for  the file the link references rather than for the link
          itself

또는 찾기를 사용하여 :

find -L .

찾기 맨 페이지에서 :

-L     Follow symbolic links.

언급 한 최상위 링크와 같은 몇 가지 심볼릭 링크 만 따르려는 경우 명령 줄에서 전달한 심볼릭 링크 만 따르는 -H 옵션을 확인해야합니다.


5

나는 tree적절한 것을 알았지 만 나무가 설치되지 않았습니다. 그래서 여기에 아주 가까운 대안이 있습니다.

find ./ | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/'

이것은 내가 필요한 것입니다. 감사합니다.
Scott C

5
find -L /var/www/ -type l

# man find
-L     Follow  symbolic links.  When find examines or prints information about files, the information used shall be taken from the

링크 자체가 아닌 링크가 가리키는 파일의 속성 (링크가 끊어진 심볼릭 링크이거나 찾기에서 링크가 가리키는 파일을 검사 할 수없는 경우) 이 옵션의 사용은 -noleaf를 의미합니다. 나중에 -P 옵션을 사용하면 -noleaf가 계속 적용됩니다. -L이 유효하고 find가 검색 중에 서브 디렉토리에 대한 심볼릭 링크를 발견하면 심볼릭 링크가 가리키는 서브 디렉토리가 검색됩니다.


2
ls -R -L

-L심볼릭 링크를 역 참조합니다. 그래도 파일에 대한 심볼릭 링크를 볼 수 없게됩니다. 파일이 뾰족한 파일처럼 보입니다.


-1

모든 파일 내용 을 인쇄하려는 경우 : find . -type f -exec cat {} +

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