여러 디렉터리에 있는 텍스트 파일에 대한 grep 명령

여러 디렉터리에 있는 텍스트 파일에 대한 grep 명령

특정 디렉터리(main_directory)에 24개의 디렉터리가 있습니다. 각 24개의 디렉터리에는 이름이 DATA.txt인 텍스트 파일이 있습니다.

각 텍스트 파일에 대해 아래의 특정 패턴을 추출하려면 grep 명령을 사용해야 합니다.

2* x  = 3800689.6402     y  = 882077.3636     z  = 5028791.2953

2* x =부분은 모든 DATA.txt에 대해 일정합니다. 다른 숫자는 가변적입니다. 각 DATA.txt에 대해 위 줄을 추출하여 다른 텍스트 파일에 저장해야 합니다. 이 프로세스에 어떤 스크립트를 사용할 수 있나요?

답변1

를 사용하여 재귀적으로 검색하려면 옵션 grep을 사용하십시오 -R.

정확한 문자열을 검색하려면 를 사용하세요 -F. 그러면 2*정규식으로 처리되지 않습니다.

특정 파일 이름만 검색하려면 이 --include옵션을 사용하세요. 결합:

grep -FR --include=DATA.txt '2* x' main_directory > another_text_file

답변2

대상 파일의 이름을 알고 있으므로 다음을 수행할 수도 있습니다.

grep '^2\* x' */DATA.txt > newfile

또는 다음을 사용하여 awk:

awk '^/2\* x/' */DATA.txt > newfile

그리고 펄:

perl -ne 'print if /2\* x/' */DATA.txt > newfile

답변3

일반적인 접근:

grep -r <pattern>

또는

구체적인 접근 방식:

find -name <file patterns which you want to find> | xargs grep <pattern you looking for>

관련 정보