find & grep을 실행하고 출력에 경로를 포함합니다.

find & grep을 실행하고 출력에 경로를 포함합니다.

적어도 CentOS 시스템과 이전 버전의 Fedora에서는 다음 명령을 실행하고 해당 grep 일치가 있는 파일 목록을 얻을 수 있습니다.

$ find -name "version.php" -type f | xargs grep "^\$wp_version" site.com/wp-includes/version.php:$wp_version = '4.7.3';

적어도 Fedora 22 이상에서는 동일한 명령을 실행하면 더 이상 경로와 파일 이름이 포함되지 않습니다.

find -name "version.php" -type f | xargs grep "^\$wp_version" $wp_version = '4.7.3';

경로만 표시하기 위해 -l을 포함할 수 있다는 것을 알고 있지만 일치 항목을 잃지 않고 경로를 포함할 수 있는 방법이 있습니까? man 파일에는 아무 것도 표시되지 않습니다.

답변1

CentOS/Fedora, 따라서 GNU grep을 가정하면,다음과 같은 스위치가 있습니다:

-H, --with-filename
   Print the file name for each match.  This is the default 
   when there is more than one file to search.

즉, 동작의 차이는 첫 번째 경우 find가 여러 파일을 캡처하여 grep파일 이름을 나열한다는 것일 수 있습니다. 두 번째 경우에는 하나의 파일만 일치하면 이름이 손실됩니다.

따라서 -H수동으로 추가하여 강제로 적용하세요.

관련 정보