디렉토리 구조 없이 tar 압축

디렉토리 구조 없이 tar 압축

현재 디렉터리 아래에는 두 개의 하위 디렉터리가 있습니다.

dir_1/
   - file1.png
   - file2.png
   ...
   - fileN.png

dir_2/
   - fileA.txt
   - ...
   - fileZ.txt

다음과 같이 두 디렉토리를 tar 압축할 때:

tar -cvzf result.tar.gz dir_1/ dir_2/ 

나는 얻었다result.tar.gz그러나 디렉토리 구조는 유지합니다. 내 말은, 내가 추출할 때result.tar.gzdir_1, &를 다시 받았습니다 dir_2.

디렉토리 구조가 남지 않도록 tar 압축하려면 어떻게 해야 합니까? 즉, tar.gz 파일을 추출하면 파일만 가져옵니다.

result/
   file1.png 
   ... 
   fileN.png 
   fileA.txt
   ...
   fileZ.txt

답변1

옵션 으로 하시면 될 것 같아요 -C.

tar 매뉴얼 페이지에서:

-C directory, --cd directory, --directory directory
    In c and r mode, this changes the directory before adding the following files.
    In x mode, change directories after opening the archive but before extracting
    entries from the archive.

즉, 실행할 수 있어야 함을 의미합니다.

tar cvzf result.tar.gz -C /path/to/dir1/ . -C /path/to/dir2/ .

당신이 원하는 것을 달성하기 위해.

답변2

--transformGNU tar를 사용하면 아카이브에 파일을 추가하거나 아카이브에서 추출할 때 파일 이름을 다시 쓰는 옵션을 사용할 수 있습니다 . BSD tar 또는 pax를 사용하면 옵션이 -s동일한 작업을 수행합니다.

선행 디렉토리 구성요소를 제거하려면( dir_1/subdir/somefile로 저장됨 subdir/somefile) 다음을 수행하십시오.

tar -czf result.tar.gz --transform '!^[^/]*/!!' dir_1 dir_2

모든 디렉토리 구성요소를 제거하려면( dir_1/subdir/somefile로 저장됨 somefile) 다음을 수행하십시오.

tar -czf result.tar.gz --transform '!^.*/!!' dir_1 dir_2

관련 정보