2017-01-06 6 views
0

디렉토리 만 검색하는 csh 명령을 찾고 있습니다.
나는 디렉토리의 이름을 알고 있지만 (MY_DIR), 현재 디렉토리 아래까지의 위치를 ​​완전히 무시합니다.csh find 명령 : 최상위 디렉토리 가져 오는 방법

내가 명령을 싶습니다

  • 은에 액세스 할 수 없습니다 디렉토리를 종료 경우 오류 메시지를주지 않았다;
  • 은 디렉토리를 찾지 못한 경우를 대비하여 공백 문자열을 제공합니다.
  • 디렉터리가 처음 발견되면 즉시 검색을 종료하십시오.
  • 은 최상위 디렉토리에 우선 순위를 부여했습니다.

나는 find 오른쪽 명령이라고 생각하고 나는 같이 그것을 사용 : 다음과 같이

find . -type d ! -perm -a+r -prune -o \(-type d -o -type l \) -name MY_DIR -print -quit 

는 디렉토리 구조 인

DIR_A0/DIR_A1/DIR_A2/MY_DIR 
DIR_B0/DIR_B1/MY_DIR 

결과였다 :

DIR_A0/DIR_A1/DIR_A2/MY_DIR 

나는 차라리 얻고 싶습니다.

DIR_B0/DIR_B1/MY_DIR 

누군가이 제품을 분류하는 방법에 대한 조언을 줄 수 있는지 궁금합니다. 사전

답변

0

은 "최상의"디렉토리에

많은 감사는 가장 적은 / 문자 하나입니다.

Borrowing from this answer

, 우리가 awk 출력을 파이프하여이를 얻을 수 있습니다 : 당신이 당신의 find 명령에서 -quit 옵션을 제거 할 수 있습니다

find . -name MY_DIR |\ 
    awk -F/ 'BEGIN { depth=100; } depth > NF { depth=NF; dir=$0; } END { print dir }' 

참고. AFAIK는 으로 단지으로 이것을 수행 할 수있는 방법이 없습니다. find은 파일 시스템에 저장된 경로를 찾는 것으로 (순서는 자유 롭습니다) 찾을 수 있습니다. 먼저 전체 목록을 보려면 필요합니다.