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