[linux] 디렉토리의 모든 파일에서 grep 작업을 수행하는 방법

xenserver를 사용하여 디렉토리에있는 각 파일에 대해 명령을 수행하여 명령 출력에서 ​​일부 내용을 가져 와서 파일에 추가하려고합니다.

사용하려는 명령과 필요에 따라 문자열을 grep하는 방법이 명확합니다.

그러나 내가 확실하지 않은 것은 더 이상 파일을 찾을 수 없을 때까지 다음 파일로 이동하여 각 파일 에서이 명령을 수행하는 방법입니다.



답변

grep $PATTERN *충분할 것입니다. 기본적으로 grep은 모든 하위 디렉토리를 건너 뜁니다. 그러나 당신이 그들을 통해 grep하려는 grep -r $PATTERN *경우입니다.


답변

리눅스에서 나는 보통이 명령을 사용하여 dir 내의 특정 텍스트를 재귀 적으로 잡습니다.

grep -rni "string" *

어디,

r = 재귀, 즉 현재 디렉토리 내에서 검색 서브 디렉토리
n = stdout에 행 번호를 인쇄하려면
i = 대소 문자를 구분하지 않는 검색


답변

찾기를 사용하십시오. 진지하게, 그것이 작동하는 파일을 실제로 볼 수 있기 때문에 가장 좋은 방법입니다.

find . -name "*.sql" -exec grep -H "slow" {} \;

-H는 mac마다 다르며 결과에 파일 이름이 표시됩니다.


답변

모든 하위 디렉토리를 검색하고 특정 파일 유형 만 검색하려면 grep with를 사용하십시오 --include.

예를 들어, 현재 디렉토리에서 * .yml 및 * .yaml의 텍스트를 재귀 적으로 검색합니다.

grep "text to search" -r . --include=*.{yml,yaml}


답변

여러 명령을 수행하려면 다음을 사용할 수 있습니다.

for I in `ls *.sql`
do
    grep "foo" $I >> foo.log
    grep "bar" $I >> bar.log
done


답변