![명령줄 검색에서 파일 내용을 단일 파일로 복사하는 방법은 무엇입니까?](https://linux55.com/image/38658/%EB%AA%85%EB%A0%B9%EC%A4%84%20%EA%B2%80%EC%83%89%EC%97%90%EC%84%9C%20%ED%8C%8C%EC%9D%BC%20%EB%82%B4%EC%9A%A9%EC%9D%84%20%EB%8B%A8%EC%9D%BC%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EB%B3%B5%EC%82%AC%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
모든 검색 결과의 내용을 파일에 복사합니다. 검색결과를 복사하고 싶지 않고, 검색결과의 파일 내용을 복사하고 싶습니다.
예를 들어, 내 검색 결과는 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
비어 있지 않은 각 파일에 대해 하나의 명령을 실행한다는 의미이므로 효율성이 떨어집니다.