2017-11-01 15 views
0

텍스트를 찾으려고했습니다.grep 옵션에 대한 두 가지 경우

아래 두 가지 사항은 무엇이 다릅니 까?

grep -r "text" ./* 
grep -r "text" . 
+0

. 현재 디렉토리를 의미합니다. ./*는 현재 디렉토리 아래에있는 모든 요소를 ​​의미합니다. 예를 들어, ls에 대한 동작은 2 가지 상황에서 상당히 다를 수 있습니다. grep의 경우 재귀 모드 을 사용하고 있기 때문에 grep은 동일합니다. 두 개의 다른 출력 파일에 두 명령의 결과를 출력 한 다음 그 두 파일의 차이점을 만들 수 있는지 확인하십시오! – Allan

+0

가능한 경우'strace' 명령을 시도하십시오. –

+0

@ Karthikeyan 왜 strace의 사용을 권하는가? strace는 프로세스에 대한 모든 하위 레벨 시스템 호출을 덤프합니다. grep을 사용하여 strace의 유스 케이스를 검색했습니다 ... 그리고 grep은 strace로부터 출력되는 (종종 방대한) 볼륨을 제한하는 데 확실히 유용합니다. 아니면 다른 유스 케이스를 구상하고 있습니까? –

답변

1

두 명령은 하위 디렉토리에서 current directory에서 파일과 파일을 가져 ...하지만 ./*. 같은 ~/.bashrc로 시작하는 이름을 가진 모든 hidden files and directories 제외됩니다.

grep -r "text" ./* 
grep -r "text" . 

-r 플래그는 재귀 검색을 수행하는 것을 의미하고, .는 현재 디렉토리를 사용하는 것을 의미하고 * 지정된 디렉토리에있는 모든 비 숨겨진 파일을 사용하는 것을 의미합니다. 재귀 검색은이 디렉토리의 모든 파일과 모든 하위 디렉토리의 모든 파일이 처리됨을 의미합니다.

겉으로는 더 포괄적 인 ./*은 일부 파일을 역설적으로 빠뜨립니다. 사용자 계정의 최상위 레벨에서 유닉스와 유사한 OS에서 검색하는 경우 파일의 핵심 카테고리 중 하나는 ~/.bashrc와 같이 rc files과 같이 많습니다.

+1

'./*'또는'*'는 숨김 파일과 일치하지 않으므로'.'는 일치시킵니다. – thanasisp

+0

내 슬립을 포착 해 주셔서 감사합니다. 귀하의 수정 내용이 제 답변에 통합되었습니다. –