파일 이름을 지정하는 tar
에 어떻게 정보를 파이프 할 수 있습니까? 대신 당신이 역 따옴표를 사용할 수있는 파이프를 사용stdin에서 tar를 빌드하려면 어떻게해야합니까?
답변
뭔가 같은 :
tar cfz foo.tgz -T -
그러나 가능한 모든 파일 이름에 대해서는 작동하지 않습니다. --null
옵션을 고려하고 tar
을 find -print0
에서 가져와야합니다. 합니다 (xargs
예제는 여러 tar
명령을 큰 파일 목록에 대한 꽤 업무를 생성합니다 때문입니다.)
, 예를 들어, 대신 ls -1 *
의
tar cvzf archive.tgz `ls -1 *`
당신은 보관에 필요한 파일
의 목록을 생성하는 다른 명령을 넣을 수 있습니다유일한 것은 ls 명령의 출력이 쉘의 최대 허용 명령 행 크기보다 길면 작동하지 않는다는 것입니다. 그런 경우에, 당신은 다른 대답 중 하나로서 그것을해야합니다; 목록이 임의로 길어질 수 있습니다. 또한 "find [...] -print0"은 특수 문자가있는 멤버가있는 tar 파일을 만들 수 있습니다. 여기서 ls 메서드는 그렇지 않습니다. 이 방법은 안전하지 않거나 보편적으로 적용 할 수 없습니다. –
find /directory > filename
tar -T filename -cf archive.tar
으로 이미 geekosaur 지적, 파이프 필요가 xargs
에 find
의 출력이없는 그것 때문에 find ... -print0 | tar --null ...
을 사용하여 의 출력을 tar
에 직접 연결할 수 있습니다.
아카이브 파일을 제외 할 때 gnutar
과 bsdtar
의 약간의 차이점에 유의하십시오.
# exclude file.tar.gz anywhere in the directory tree to be tar'ed and compressed
find . -print0 | gnutar --null --exclude="file.tar.gz" --no-recursion -czf file.tar.gz --files-from -
find . -print0 | bsdtar --null --exclude="file.tar.gz" -n -czf file.tar.gz -T -
# bsdtar excludes ./file.tar.gz in current directory by default
# further file.tar.gz files in subdirectories will get included though
# bsdtar: ./file.tar.gz: Can't add archive to itself
find . -print0 | bsdtar --null -n -czf file.tar.gz -T -
# gnutar does not exclude ./file.tar.gz in current directory by default
find . -print0 | gnutar --null --no-recursion -czf file.tar.gz --files-from -
현재 디렉토리에서 찾으면 대상으로 ../file.tar.gz를 사용하는 것만으로도 충분합니다. –
geekosaur answer 확장 :
는find /directory | tar -cf archive.tar -T -
당신은 -T
옵션을 사용하여 표준 입력을 사용할 수 있습니다. 당신은 일반적으로 어떤 조건 (예를 들어 -name
옵션)을 사용하여 파일을 필터링 할 경우 에 필요
참고는 당신이 원하는 것을하지, 그렇지 않으면 타르 모든 콘텐츠를 처리 할 파이프에 디렉토리를을 제외 할 수 있습니다. 그래서, 사용
find /directory -type f -name "mypattern" | tar -cf archive.tar -T -
당신이 -type
를 사용하지 않는 경우
"mypattern"
일치하는 디렉토리의 모든 내용이 추가됩니다!
나는이 방법이 다른 것보다 낫다고 생각한다. 왜냐하면 당신은 stdout으로 어떤 것을 출력 할 수 있기 때문이다. – daks
'find'를 사용하여 파일 유형에 대해 구체적으로 생각하고 싶을지도 모른다. 구체적으로'find -type f'를 할 것입니다. 이것은 심볼릭 링크, 문자 장치 등을 제거합니다. 'find -type f -o -type d'보다 빈 디렉토리에 관심이 있다면. – JamesThomasMoon1979
더 나은 압축을 위해 bzip2를 사용하면 도움이 될 수 있습니다.
find $PWD -name "*.doc" > doc.filelist
tar -cvjf jumbo.tar.bz2 -T doc.filelist
- 1. 오류없이 py2exe를 빌드하려면 어떻게해야합니까?
- 2. Xcode : .app 프로젝트를 공유 라이브러리로도 빌드하려면 어떻게해야합니까?
- 3. Android 에뮬레이터 용 커널을 빌드하려면 어떻게해야합니까?
- 4. C 프로그램을 .app 프로그램으로 빌드하려면 어떻게해야합니까?
- 5. 명령 줄에서 MSBuild를 사용하여 모두를 빌드하려면 어떻게해야합니까?
- 6. 명령 행에서 Safari 확장 패키지를 빌드하려면 어떻게해야합니까?
- 7. VS 2010의 C 런타임 라이브러리를 빌드하려면 어떻게해야합니까?
- 8. 개미 : 경로 정보없이 tar를 만드시겠습니까?
- 9. stdin에서 읽기를 중지하십시오.
- 10. stdin에서 배우 메시지를받는 방법?
- 11. stdin에서 암호 읽기
- 12. 리소스 프레임 워크를 빌드하려면
- 13. 상호 의존적 인 여러 하위 디렉토리로 C++ 프로젝트를 빌드하려면 어떻게해야합니까?
- 14. 하나의 Makefile로 다른 버전의 구성 요소를 효율적으로 빌드하려면 어떻게해야합니까?
- 15. 스칼라에서, 포함하는 클래스 외부의 중첩 된 유형을위한 팩토리를 빌드하려면 어떻게해야합니까?
- 16. 허드슨과 함께 Mercurial에 태그 된 버전을 빌드하려면 어떻게해야합니까?
- 17. 하나의 Jenkins 프로젝트로 여러 Eclipse 플러그인 프로젝트를 자동으로 빌드하려면 어떻게해야합니까?
- 18. Maven을 사용하여 RAD에서 J2EE EAR 파일을 빌드하려면 어떻게해야합니까?
- 19. Ant Java 클래스 경로에서 Maven 종속성을 빌드하려면 어떻게해야합니까?
- 20. GUI 및 CLI를 사용하여 Java App을 빌드하려면 어떻게해야합니까?
- 21. Git의 stdin에서 읽기 (PHP 포함)
- 22. stdin에서 백 스페이스 키를 무시하십시오.
- 23. 블로킹없이 STDIN에서 줄 단위로 읽기
- 24. stdin에서 읽기 및 Ruby에서 stdout으로 인쇄
- 25. stdin에서 첫 번째 줄을 제거하고 stdout으로 리디렉션
- 26. STDIN에서 데이터를 읽는 중에 파일 압축
- 27. 내가이 같은 stdin에서 읽을 때 읽기 바이트
- 28. Java에서 여러 이미지를 stdin에서 분리하는 방법
- 29. Curses - stdin에서 비 차단 확인 수행 - C
- 30. 펄 스크립트는 STDIN에서 데이터를 계속 읽습니다.
@geekosaur는 질문에 더 잘 맞는 응답이기 때문에 체크해야한다고 생각합니다. –
내가 선택한 답변을 변경했습니다. –