명령줄 검색에서 파일 내용을 단일 파일로 복사하는 방법은 무엇입니까?

명령줄 검색에서 파일 내용을 단일 파일로 복사하는 방법은 무엇입니까?

모든 검색 결과의 내용을 단일 파일에 복사합니다. 검색 결과를 복사하고 싶지 않고 검색 결과의 파일 내용을 복사하고 싶습니다.

예를 들어 내 검색 결과가 10개의 파일 목록을 반환했다면 해당 10개 파일의 내용을 단일 파일(예: )에 복사하고 싶습니다 dump.test.

답변1

GNU grepxargs:

grep -rlZ search-text some/dir/ | xargs -r0 cat > dump.test

-l와 일치하는 행이 하나 이상 포함된 파일을 나열하는 것입니다 search-text. -Z에 안전하게 전달될 수 있도록 해당 줄을 NUL로 구분하여 인쇄하는 것입니다 xargs -0.

-r내부의 모든 파일을 some/dir/재귀적으로 검색합니다.

POSIX적으로:

find some/dir -type f -size +0 -exec grep -q search-text {} \; 
   -exec cat {} + > dump.test

grep이는 비어 있지 않은 파일당 하나의 명령을 실행한다는 의미이므로 효율성이 떨어집니다 .

관련 정보