저는 파일에서 패턴을 찾기 위해 find를 사용하고 있습니다. 그런 다음 처음 10개만 찾아서 압축하기를 원합니다.
find /var/log/file | xargs grep "pattern" | head -n10 | tar -czvf tarfile.tgz
나도 xargs
그것을 시도했습니다 tar
. 이로 인해 오류가 발생할 수도 있습니다. 내가 뭘 잘못했나요?
이것이 첫 번째 명령에서 본 내용입니다.
tar: Cowardly refusing to create an empty archive
Try `tar --help' or `tar --usage' for more information.
답변1
당신은 그것을 사용할 수 있습니다
tar cvzf files.tar.gz $(find /var/log/file -type f -exec grep -l "pattern" {} + | \
head -n10)
여기에서는 grep -l
패턴과 일치하는 파일만 인쇄됩니다.
-P
이와 같은 오류가 발생하면 옵션을 사용해야 합니다.tar
오류 tar: 멤버 이름에서 선행 "/"를 제거합니다.
바라보다man tar
-P, --absolute-names
don't strip leading '/'s from file names
또는 -C
아카이브 파일의 전체 경로를 지정하는 대신 변경 디렉터리를 지정할 수 있습니다.
답변2
노력하다
tar cvzf tarfile.tgz $(find /var/log/file | grep "pattern" | head -n10 )
어디
- 내부 코드는
$( )
10개의 파일 목록을 작성합니다.
cpio와 달리 tar는 표준 입력에서 파일 목록을 허용하지 않습니다.