xenserver를 사용하여 디렉토리에있는 각 파일에 대해 명령을 수행하여 명령 출력에서 일부 내용을 가져 와서 파일에 추가하려고합니다.
사용하려는 명령과 필요에 따라 문자열을 grep하는 방법이 명확합니다.
그러나 내가 확실하지 않은 것은 더 이상 파일을 찾을 수 없을 때까지 다음 파일로 이동하여 각 파일 에서이 명령을 수행하는 방법입니다.
xenserver를 사용하여 디렉토리에있는 각 파일에 대해 명령을 수행하여 명령 출력에서 일부 내용을 가져 와서 파일에 추가하려고합니다.
사용하려는 명령과 필요에 따라 문자열을 grep하는 방법이 명확합니다.
그러나 내가 확실하지 않은 것은 더 이상 파일을 찾을 수 없을 때까지 다음 파일로 이동하여 각 파일 에서이 명령을 수행하는 방법입니다.
답변:
grep $PATTERN *충분할 것입니다. 기본적으로 grep은 모든 하위 디렉토리를 건너 뜁니다. 그러나 당신이 그들을 통해 grep하려는 grep -r $PATTERN *경우입니다.
grep $PATTERN *.cpp *.h. 어떤 파일을 grepping해야하는지에 대한보다 구체적인 규칙이 필요한 경우 find명령을 사용 하십시오 (Rob의 답변 확인).
grep -r x .결과를 실행 하면 모든 확장자의 모든 파일에서 나옵니다. 달리는 grep -r x *.scss것보다 결과가 나타나지 않습니다.
*.scss그렙은 당신이 원하는 모든 파일에 보이지 않도록 현재 디렉토리에있는 파일 어딘가 깊은 하위 디렉토리에 있습니다. --include옵션을 사용 하여 grep에게 특정 패턴과 일치하는 파일을 재귀 적으로 찾도록 지시 해야합니다 grep -r x --include '*.scss' . . 또는 그냥 사용 find하십시오 (Rob의 답변 참조).
찾기를 사용하십시오. 진지하게, 그것이 작동하는 파일을 실제로 볼 수 있기 때문에 가장 좋은 방법입니다.
find . -name "*.sql" -exec grep -H "slow" {} \;
-H는 mac마다 다르며 결과에 파일 이름이 표시됩니다.
xargs사용하지 않고 출력을 파이프하는 -exec것이 훨씬 빠릅니다 -exec. 파일 이름의 공백에 대한 표준 경고가에 적용됩니다 xargs.
xargs문법을 잊어 버린다 .
find . -iname "*.sql" -print0 | xargs -0 grep "slow"