2017-10-17 13 views
1

디렉토리 이름 /opt/BMC/patrol/Patrol* 또는 patrol*으로 시작하는 모든 디렉토리 이름을 표시하려고합니다. 명령Linux에서 소문자 또는 대문자로 시작하는 디렉토리를 표시하는 방법은 무엇입니까?

ls /opt/BMC/patrol/ | grep -i '^Patrol*' 

는 대신 디렉토리,

Patrol3 
Patrol3.16 
PatrolAgent_3181.sh 
patrol_cfg.sh 

그것은 정확하지만, 디렉토리와 파일이를 생성합니다.

명령 ls -d /opt/BMC/patrol/*/ | grep -i '^Patrol*' 아무것도 ... 가 재귀 적으로 검색합니까

/opt/BMC/patrol/BMCINSTALL/ 
/opt/BMC/patrol/bmc_products/ 
/opt/BMC/patrol/cert_gg/ 
/opt/BMC/patrol/common/ 
/opt/BMC/patrol/Install/ 
/opt/BMC/patrol/itools/ 
/opt/BMC/patrol/Patrol3/ 
/opt/BMC/patrol/Patrol3.16/ 
/opt/BMC/patrol/perform/ 
/opt/BMC/patrol/rtserver/ 
/opt/BMC/patrol/temp2/ 
/opt/BMC/patrol/test/ 
/opt/BMC/patrol/testftp/ 
/opt/BMC/patrol/Uninstall/ 

을 생산

명령을 생산하지? 대문자 또는 소문자로 시작하는 디렉토리 이름 만 찾는 명령은 무엇입니까?

+0

그런데 사이트에 오신 것을 환영합니다! 사이트 둘러보기에 대한 더 자세한 정보는 [둘러보기] (https://stackoverflow.com/tour)와 [how-to-ask 페이지] (https://stackoverflow.com/help/how-to-ask)를 확인하십시오. 실행됩니다. – cxw

답변

2

find을 시도해보십시오

find /opt/BMC/patrol -type d -iname 'patrol*' 

-type d 일치 디렉토리 및 -iname는 대소 문자를 구분하지 일치. 'patrol*'''으로 지정해야합니다. 그렇지 않으면 find이 발생하기 전에 쉘이 *을 확장 할 수 있기 때문입니다.

find 기본적으로 재귀 적으로 검색합니다 (아래 2 번 편집 참조).

편집ls은이 사용 사례에 최적화되어 있지 않습니다. ls -d은 디렉토리로의 내림을 방지하므로 일치 항목을 얻지 못합니다. 현재 grep까지는 ^이 줄의 시작 부분과 일치하고 디렉토리 이름 앞에 /이 표시되지 않습니다. 따라서 grep -i '\/patrol'Patrol 또는 patrol으로 시작하는 이름을 찾는 방법이지만 디렉토리로 필터링해야합니다. find은 이러한 모든 사항을 처리하도록 설계되었습니다.

find /opt/BMC/patrol -maxdepth 1 -type d -iname 'patrol*' 

나는 당신의 질문에 따라, 다음과 같은 내용으로 테스트 디렉토리를 만든 :

편집 비 재귀 2, -maxdepth 사용

opt/BMC/patrol/ 
opt/BMC/patrol/BMCINSTALL/ 
opt/BMC/patrol/bmc_products/ 
opt/BMC/patrol/cert_gg/ 
opt/BMC/patrol/common/ 
opt/BMC/patrol/common/patrol.d/ 
opt/BMC/patrol/Install/ 
opt/BMC/patrol/itools/ 
opt/BMC/patrol/Patrol3/ 
opt/BMC/patrol/Patrol3.16/ 
opt/BMC/patrol/PatrolAgent_3181.sh 
opt/BMC/patrol/patrol_cfg.sh 
opt/BMC/patrol/perform/ 
opt/BMC/patrol/rtserver/ 
opt/BMC/patrol/temp2/ 
opt/BMC/patrol/test/ 
opt/BMC/patrol/testftp/ 
opt/BMC/patrol/Uninstall/ 

나는 처음 실행하면 명령 (-maxdepth 제외)은 다음과 같이 표시됩니다.

opt/BMC/patrol 
opt/BMC/patrol/common/patrol.d 
opt/BMC/patrol/Patrol3 
opt/BMC/patrol/Patrol3.16 
나는 ( -maxdepth와) 두 번째 명령을 실행하면

, 내가 얻을 :

opt/BMC/patrol 
opt/BMC/patrol/Patrol3 
opt/BMC/patrol/Patrol3.16 

common/patrol.d이 결과에 존재하지 않습니다.

+0

그것은 작동하지만 '/ 옵션/BMC/순찰/ /옵션/BMC/순찰/Patrol3 /opt/BMC/patrol/common/patrol.d 을 얻을 beacuse 다시는 하위 디렉토리에 재귀 적으로도 검색/opt/BMC/patrol/Patrol3.16' –

+0

@ ag.lis 비 재귀 적으로 하시겠습니까? 그렇다면 [edit your questions] (https://stackoverflow.com/posts/46790208/edit)를 통해 명확히하십시오. 감사! – cxw