2010-04-03 4 views
3

linux에서 어떤 이름으로 모든 폴더를 (재귀 적으로) 나열하고 심볼릭 링크를 가리키는 쉘 스크립트를 작성하려고합니다.특정 이름과 심볼릭 링크가없는 폴더 찾기

예를 들어, 내가 가진 :

/home/htdocs/cust1/typo3_src-4.2.11 
/home/htdocs/cust2/typo3_src-4.2.12 
/home/htdocs/cust3/typo3_src-4.2.12 

가 지금은/집/htdocs에 모든 하위 디렉토리를 통해 이동 한 곳에서 지적되지 typo3_ * 그 폴더를 찾고 싶어요.

쉘 스크립트 나 명령으로 가능해야하지만 어떻게 될지 모르겠다. 당신은 당신이보고 다른 모든 파일을 검사해야하므로, 파일 노드에서이 파일을 가리키는 심볼릭 링크가있는 경우

스테판

답변

1

내가 일반적인 파일 시스템 저장소 전혀 생각하지 도움을

감사합니다 이 링크가 심볼릭 링크 인 경우. 검색의 깊이를 특정 수준으로 제한하지 않으면 이 매우 오랜 시간이 걸릴 수 있습니다. 예를 들어 /home/htdocs에서 검색을 수행하려는 경우 다음과 같이 작동합니다.

# find specified folders: 
find /home/htdocs -name 'typo3_*' -type d | while read folder; do 
    # list all symlinks pointing to $folder 
    find -L /home/htdocs -samefile "$folder"|grep -v "$folder\$" 
done 
+0

디렉토리에 이름에 공백이 있으면 실패합니다. 첫 번째'find'를'while read' 루프로 파이프해야합니다. 또한 특정 상황에서'grep -v' * 패턴에 앵커가 없으므로 디렉토리를 잘못 삭제할 수도 있습니다. –

+0

@Dennis Williamson : 피드백에 대한 감사, 답변 업데이트 – soulmerge