선행 디렉토리 경로를 제거한 후 GNU tar를 사용하여 파일을 아카이브합니다.

선행 디렉토리 경로를 제거한 후 GNU tar를 사용하여 파일을 아카이브합니다.

다음 구조를 평면화하고 보관하고 싶습니다.

├── a
│   └── a.txt
├── ...
│   └── ...
└── z
    └── z.txt

이 tar 아카이브에서:

a.txt
...
z.txt

예를 들어, 나는 할 수 있습니다

  1. 임시 위치에 구조를 편평화한 cp후 보관합니다.
  2. 반복적으로 아카이브를 생성하고(tar 옵션) --append사용--directory
  3. 추출 중 구조 평탄화--strip-components

다른 똑똑한 아이디어는 없나요?

답변1

방금 발견한 내용 --transform:

 File name transformations:

      --strip-components=NUMBER   strip NUMBER leading components from file
                             names on extraction
      --transform=EXPRESSION, --xform=EXPRESSION
                             use sed replace EXPRESSION to transform file
                             names

매력적인:

tar -caf archive.tar.xz --transform 's|.*/\(.*\)|\1|g' $(find . -type f)

답변2

나는 모든 것을 디렉토리에 압축을 풀고 rsync모든 것을 디렉토리에 넣은 다음 다시 패키지했습니다.

관련 정보