특정 파일 형식을 찾아 압축하는 방법은 무엇입니까?

특정 파일 형식을 찾아 압축하는 방법은 무엇입니까?

나에게 문제가 있는 것 같다. 현재 디렉토리에 몇 가지 다른 파일 형식이 있는데 그냥 원합니다.아스팔트이것.png문서. 이것이 내가 시작한 방법입니다.

find -name "*.png" | tar -cvf backupp.tar

어떤 파일을 지정하지 않았기 때문에 작동하지 않았으므로 다른 사람들이 어떻게 했는지 확인하기 위해 xargs를 추가했습니다.

find -name "*.png" | xargs tar -cvf backupp.tar

이번에는 제대로 작동하여 backupp.tar 파일이 생성되었지만 여기에 문제가 있습니다. 추출이 안되는 것 같네요. 내가 입력할 때마다:

tar -xvf backupp.tar

아무 일도하지. chmod와 sudo를 변경해 보았지만 아무것도 작동하지 않습니다.

그렇다면 제가 명령을 완전히 잘못 입력한 걸까요, 아니면 뭔가를 놓친 걸까요?

답변1

두 방법 모두 유효에 가깝지만 각각에는 명백한 문제가 있습니다.

첫 번째 방법에서는 파일 목록을 .stdin에서 읽으 tar려면 / 및 옵션을 tar사용해야 합니다 .-T--files-from-

find -name '*.png' -print0 | tar -cvf backup.tar --null -T - 

참고로 공식 문서를 참조하세요:

노트:-print0및 플래그를 사용하면 --null공백이 포함된 파일 이름도 처리할 수 있는지 확인해야 합니다.

tar두 번째 방법에서는 via 를 통해 실행하려고 xargs하지만 "create" 옵션( --create/ -c)을 사용하고 있습니다. for 루프나 for 루프 내부에서 "create" 옵션을 사용하면 xargs반복할 때마다 아카이브를 덮어씁니다. 대신 추가 옵션( -a/ --append) 또는 업데이트 옵션( -u/ --update)을 사용해 보세요. 예를 들면 다음과 같습니다.

find -name "*.png" -exec tar -uvf backupp.tar {} \;

이렇게 하면 파일을 덮어쓰는 대신 각 반복 후에 아카이브에 파일이 추가됩니다.

어느 쪽이든 작업이 완료되면 목록 옵션( --list/ -t)을 사용하여 아카이브의 내용을 보고 모든 것이 예상대로 작동하는지 확인할 수 있습니다.

tar tf backupp.tar

답변2

간단히 와일드카드를 사용할 수 있습니다.

tar -cvf backup.tar *.png

또는 사용하여find

find -name "*.png" | tar -cvf backup.tar -T -

-T옵션은 FILE에서 파일 이름을 가져옵니다(이 경우 stdin).-

관련 정보