어떤 특정 식별자가 사용된 파일을 찾으려고 합니다. 나는 파일 이름과 식별자를 알고 있으므로 다음을 사용하여 원하는 것을 달성합니다.
find ./ -name "configuration.php" -print | xargs cat | grep db_userXYZ
유일한 문제는 파일 이름을 잃어버렸다는 것입니다. 어딘가에서 사용되는 것으로 보이지만 db_userXYZ
위의 명령은 어떤 파일에서 사용되는지 알려주지 않습니다. 출력은 다음과 유사합니다.
$this->db_user = 'db_userXYZ';
$this->db_name = 'db_XYZ';
어떤 제안이 있으십니까?
답변1
노력하다:
find ./ -name "configuration.php" -exec grep db_userXYZ /dev/null {} +
POSIX 정의찾다 -exec utility_name [argument ...] {} +
:
기본 표현식에 더하기 기호가 있으면 기본 표현식은 항상 true로 평가되어야 하며 기본 표현식을 평가하는 경로 이름은 컬렉션으로 집계되어야 합니다. 유틸리티util_name은 각 집합 경로 이름 집합에 대해 한 번 호출되어야 합니다. 각 호출은 컬렉션 집계의 마지막 경로 이름 뒤에서 시작해야 하며 찾기 유틸리티가 종료되기 전과 이 기본 집계에 대한 다음 컬렉션(있는 경우)의 첫 번째 경로 이름 앞에서 완료되어야 하지만 호출이 지정되지 않았습니다. 이전, 도중 또는 발생 여부 다른 기본 평가 후. 호출이 종료 상태로 0이 아닌 값을 반환하는 경우 찾기 유틸리티는 0이 아닌 종료 상태를 반환해야 합니다. 두 문자 "{}"만 포함하는 인수는 집계된 경로 이름 집합으로 대체되어야 하며, 각 경로 이름은 집계 순서에 따라 호출 유틸리티에 별도의 인수로 전달됩니다. 두 개 이상의 경로 이름 집합의 크기는 유틸리티 실행으로 인해 시스템의 {ARG_MAX} 제한이 초과되지 않도록 제한되어야 합니다. 두 문자 "{}"만 포함하는 인수가 여러 개 있는 경우 동작이 지정되지 않습니다.
귀하의 grep
지원 -H
옵션( -H
제공되지 않음)POSIX grep) 다음과 같이 사용할 수 있습니다.
find ./ -name "configuration.php" -exec grep -H db_userXYZ {} +