폴더 자체 대신 폴더에 있는 파일을 아카이브에 추가하려면 어떻게 해야 합니까?

폴더 자체 대신 폴더에 있는 파일을 아카이브에 추가하려면 어떻게 해야 합니까?

이것은 중복이 아닙니다상위 디렉터리 없이 tar 아카이브 만들기

이렇게 하면 tar -czf archive directory해당 디렉토리가 아카이브에 추가됩니다. directory디렉토리 자체 대신 폴더의 파일을 추가하고 싶습니다 . 어떻게 해야 합니까? 관련되지 않은 답변을
제안해 주세요.cddirectory

이것은 표시된 내용과 중복되지 않습니다. 내용이 포함
된 디렉토리가 있습니다 .somedirabcxyz

ls somedir
abc xyz

폴더 가 아닌 파일이 포함된 아카이브를 만들고 싶습니다 abc.xyzsomedir

고쳐 쓰다: 명령을 사용하면 tar -C /home/username/dir1/dir2 -cvf temp.tar yourarchive(내 질문에 대한 답변은 중복이라고 함)
다음과 같은 결과를 얻습니다.

여기에 이미지 설명을 입력하세요.

내가 원하는 것은 tar czf archive.tar.gz -C yourarchive .내가 이것을 얻는 것입니다(이것은 내가 원하는 것에 충분히 가깝습니다.):

여기에 이미지 설명을 입력하세요.

내가 원하는 것은 다음과 같습니다(직접 파일, 폴더 없음).

여기에 이미지 설명을 입력하세요.

답변1

사용 -C:

tar czf archive -C directory .

이는 작업 디렉토리로 tar사용 하고 디렉토리( )에 포함된 모든 것을 아카이브하도록 지시합니다.directory.

사용은 -C사용과 거의 동일합니다 cd. 위의 내용은 archive시작 시 현재 디렉터리를 기준으로 해석된 다음 해석되기 전에 작업 디렉터리를 로 변경합니다.tartardirectory.

tar -C얼마나 광범위하게 지원되는지는 잘 모르겠지만 모든 Linux 배포판이 이를 지원해야 합니다.

답변2

노력하다

tar cvf archive.tar -C somedir $(ls somedir)

어디

  • cvf~ 할 것이다다시 말하다V엘보스(ly)에프엘리Archive.tar
  • -C somedirtar에게 사용하도록 지시합니다.somedir
  • $(ls somedir )디렉터리의 파일을 나열하고 $( )결과를 인수로 전달합니다.

편집하다:

주석에서 지적했듯이 도트 파일을 나열하려면 ( ls -als -A 대신 )을 사용하십시오.

답변3

당신은 이것을 할 수 있습니다인원수(1), 이는 tar의 posix 후속 버전이었지만 결코 인기를 끌지 못했습니다. tar 파일에 쓸 수 있으며 원하는 파일 이름 변환을 수행할 수 있습니다.

pax -wzf archive -s '|directory/\?||' directory

이는 다음과 같이 분류될 수 있습니다.

  • -w아카이브 쓰기( -ctar와 동일)
  • -z압축된 아카이브(tar와 동일)
  • -f archive파일에 쓰기 archive(tar와 동일)
  • -s '|directory/\?||'아카이브의 파일 이름을 바꾸십시오. 문자열을 directory선택적 /빈 문자열로 바꿉니다. /디렉토리 자체는 a로 끝나지 않지만 /다른 모든 구성원은 끝나기 때문에 선택 사항이 필요합니다 /. 이 문자열 ^은 첫 번째 항목(예: sed(1))만 대체하고 모든 파일은 다음으로 끝나므로 문자열( )의 시작 부분에 고정할 필요가 없습니다.directory/\?

명확하게 하기 위해 다음을 추가할 수 있습니다.

  • -x ustarPOSIX tar 파일 작성

그러나 이것이 기본 설정입니다.

Linux 또는 BSD 패키지 저장소에서 pax를 찾을 수 있어야 합니다. GNU pax가 있는 것 같은데 그 상태를 모르겠습니다. 데비안에는 pax의 BSD 버전이 있는 것 같습니다.

관련 정보