나는 보통이 스타일의 명령을 사용 grep
하여 여러 파일 을 실행 합니다.
find / -xdev -type f -print0 | xargs -0 grep -H "800x600"
이것이 실제로하는 일은 시스템의 모든 파일 목록을 만든 다음 각 파일에 대해 grep
주어진 인수와 각 파일의 이름으로 실행 하는 것입니다.
이 -xdev
인수는 다른 파일 시스템을 무시해야한다는 것을 알려줍니다 /proc
. 이는와 같은 특수 파일 시스템을 피하는 데 좋습니다 . 그러나 일반 파일 시스템도 무시합니다. 예를 들어, / home 폴더가 다른 파티션에 있으면 검색되지 않습니다 find / /home -xdev ...
. 말할 필요가 있습니다 .
-type f
즉, 파일 만 검색하므로 디렉토리, 장치 및 기타 특수 파일은 무시됩니다 (여전히 디렉토리로 돌아가서 내부 grep
파일에서 실행 grep
됨). 디렉토리 자체에서는 실행 되지 않으며 어쨌든 작동하지 않습니다. 그리고 항상 출력에 파일 이름을 인쇄 -H
하도록 grep
지시 하는 옵션 입니다.
find
파일 목록을 필터링하는 모든 종류의 옵션을 허용합니다. 예를 들어 -name '*.txt'
.txt로 끝나는 파일 만 처리합니다. -size -2M
2MB보다 작은 파일을 의미합니다. -mtime -5
지난 5 일 동안 수정 된 파일을 의미합니다. 이들을 -a for 및 -o for or 와 함께 결합하고 '('
괄호 ')'
를 사용 하여 표현식을 그룹화하십시오 (쉘이 해석하지 못하도록 따옴표로 묶음 ). 예를 들어 :
find / -xdev '(' -type f -a -name '*.txt' -a -size -2M -a -mtime -5 ')' -print0 | xargs -0 grep -H "800x600"
man find
가능한 필터의 전체 목록을 살펴보십시오 .
Permission denied
오류를 인쇄하지 않습니까? 루트 또는 일반 사용자로 실행 했습니까?