grep 명령을 사용하여 찾으십시오.

grep 명령을 사용하여 찾으십시오.

find 명령으로 찾은 경로로 지정된 파일에서 grep 명령이 특정 단어를 찾도록 하려면 어떻게 해야 합니까?

locate my.cnf | grep user   

(grep 명령이 명령을 찾기 위해 찾은 파일에서 "user"라는 단어를 검색하기를 원합니다)

답변1

검색 결과가 확실히 공백 없이 경로를 반환하는 경우 xargs다음을 사용할 수 있습니다.

locate my.cnf | xargs grep user

xargsnull그러나 경로나 파일 이름에 공백이 포함될 수 있는 경우를 처리하기 위해 구분 기호로 사용 locate하고(또는 문자열을 반환하는 데 사용하는 프로그램) 이를 구분 기호로 보내도록 지시하여 자신을 보호하는 습관을 들여야 합니다. 이렇게:

locate -0 my.cnf | xargs -0 grep user

경로에 /name with space/my.cnf.

답변2

내가 올바르게 이해했다면 다음과 같이 할 수 있습니다.

#!/bin/sh
typeset what1=$1
typeset what2=$2
[ "$#" -eq 2 ] || { echo "Two arguments expected"; exit 1; }
locate ${what1} | while read file; do
    grep ${what2} ${file} /dev/null
    done

locatewhat1일치하는 문자열 에 대한 인수()와 일치하는 파일을 검색합니다 what2. 이 dev/null매개변수는 일치하는 파일 이름을 강제로 grep보고합니다.

답변3

하나의 선:

for file in $(locate my.cnf) ; do grep -r user "$file" ; done

Locate에서 얻은 디렉토리 이름 아래의 파일에서 패턴을 검색하려는 경우 해당 -r패턴이 처리되고, 그렇지 않으면 삭제됩니다 -r.

관련 정보