다음과 같은 디렉토리 구조가 있습니다(이 질문에 대해 단순화했습니다).
/dirX
/dirX/d/d1 [and contained files+subdirs]
/dirX/d/d1/d2 [and contained files+subdirs]
/dirX/d/d1/d3 [and contained files+subdirs]
/dirX/d/d4 [and contained files+subdirs]
/dirX/d/d4/d5 [and contained files+subdirs]
/dirX/d/d4/d6 [and contained files+subdirs]
/dirX/d/d7 [and contained files+subdirs]
/dirY
/dirY/idx
/dirY/idx/d2 -> symlink to /dirX/d/d1/d2
/dirY/idx/d5 -> symlink to /dirX/d/d4/d5
/dirY/idx/d7 -> symlink to /dirX/d/d7
dirY/idx 계층 구조의 모든 디렉터리에 대해 명령을 실행하고 싶습니다. 일반적으로 기본 명령은 다음과 같습니다.find /dirY/idx -type d -exec CMD {} \;
놀랍게도 깊이 = 1 이후에는 실패합니다. 나는 이것이 심볼릭 링크에서 멈추기 때문이라고 확신합니다 find
. 하지만 어떻게 이 동작을 방지하고 모든 링크를 추적할 수 있습니까?
홈 디렉터리를 삭제하면 -type d
심볼릭 링크 디렉터리로 올바르게 이동하지만 검색 시 해당 디렉터리로 제한되지는 않습니다. 발견된 파일을 디렉터리로 제한하면 심볼릭 링크 수준에서 중지됩니다. 일반적으로 전체 계층 구조에서 기본 항목과 일치하는 파일을 검색하지만 이 경우에는 그렇지 않습니다.
나는 심볼릭 링크 동작 옵션 -H -L -P를 시도했습니다. (비록 -P가 기본값이지만) - FreeBSD를 사용하고 있지만 운이 없습니다.
문제가 트리의 다른 곳에서도 임의로 발생할 수 있기 때문에 중첩된 찾기를 사용하거나 링크나 디렉터리를 찾을 수 없습니다. 나는 이와 같은 문제를 해결하기 위해 심볼릭 링크 처리 매개 변수가 있다고 확신합니다. 어쩌면 그들이 하는 일을 오해하고 있을 수도 있습니다.
내 find 명령을 어떻게 수정합니까?