find 명령으로 찾은 파일을 tar 로 묶으려면?

jjaiwook79의 이미지

find 명령을 사용해서 *.txt 파일을 찾고 그 파일을 tar로 묶고 싶습니다.

다음과 같이 해 보았으나 제일 마지막에 찾은 파일만 묶이는 군요.

# find ./ -name '*.txt' -exec tar cvf txt.tar {} \;

솔라리스9에서는 tar 옵션 중에 -I 란 옵션이 있어 다음과 같이 하면 파일을 묶을 수 있었습니다.

# find ./ -name '*.txt' > txt
# tar cvf txt.tar -I txt

하지만 Linux 에서 쓰는 GNU tar에서는 -I 옵션이 다른 기능으로 쓰이더군요.

Linux tar 에서도 solaris tar 의 -I 옵션과 같은 기능이 있나요? ( man page를 봐도 찾기가 힘드네요... )

아니면 find 명령의 -exec 옵션으로 묶을 방벙이 있을까요?

답변기다리겠습니다.

happibum의 이미지

find . -name "*.txt" | xargs tar cvf txt.tar
하니까 되는듯...

dreampia의 이미지

저는 solaris에서 다음과 같이 하거든요..
물론 linux에서도 되구요.

TODAY=`date +%Y%m%d%H`
BFILE=`echo /user/dreampia/backup/src.${TODAY}`

tar cvf ${BFILE} /user/dreampia/.profile

find /user/dreampia \( -name "*.[ch]" -o -name "[mM]akefile" \) -print | xargs tar rvf ${BFILE}

r 의 옵션을 줄 경우에는 기존에 tar파일이 존재해야 .profile을 묶어서 그냥 하나 만들어놓습니다..

>/dev/null 2>&1

jjaiwook79의 이미지

답변 감사드립니다. ^^

허성규의 이미지

덕분에 반나절동안
find -type f -exec tar czvf temp.tgz {} \; 로 삽질하고 있던 문제를 해겼했네요.
아직 공부 많이 해야겠어요. ㅋㅋ

dell mini9 에 gentoo stage1 부터 깔기.

익명 사용자의 이미지


find ./ -name '*.txt' -exec tar cvf txt.tar {} +