특정 파일 형식을 찾고 tar하는 방법은 무엇입니까?

특정 파일 형식을 찾고 tar하는 방법은 무엇입니까?

나에게 문제가 있는 것 같다. 현재 디렉토리에 몇 가지 다른 파일 형식이 있는데,타르그만큼.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

두 가지 접근 방식은 모두 거의 작동했지만 각각 뚜렷한 문제가 있었습니다.

첫 번째 접근 방식에서는 파일 목록을 tar. 표준 입력에서 파일 목록을 읽으 려면 / 및 옵션을 tar사용해야 합니다 . 예:-T--files-from-

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

자세한 내용은 공식 문서를 참조하세요.

메모:-print0및 플래그를 사용하면 --null공백이 포함된 파일 이름도 처리할 수 있습니다.

tar두 번째 접근 방식에서는 via 실행을 시도 xargs하지만 "만들기" 옵션( --create/ -c)을 사용하고 있습니다. for-loop 와 함께 또는 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입니다.-

관련 정보