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

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

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

예를 들어, 내 검색 결과는 10개의 파일 목록을 반환한 다음 해당 10개 파일의 내용을 단일 파일(예: )에 복사하려고 합니다 dump.test.

답변1

GNU를 사용 grep하고 다음을 수행하십시오 xargs.

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비어 있지 않은 각 파일에 대해 하나의 명령을 실행한다는 의미이므로 효율성이 떨어집니다.

관련 정보