내 보관 요구 사항의 특성으로 인해 고정 tar.gz 아카이브가 마음에 들지 않아 대신 7z를 사용했습니다.
이 작업을 수행하려면 다음 명령을 사용합니다.
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
~/my/folder/
모든 내용의 파일 아카이브를 만듭니다 ~/my/folder.7z
.
하지만 ~/my/folder/.hiddenFolder
그러면 기록 보관소에 들어 가지 않습니다. 이 문제를 어떻게 해결하나요? *
모든 파일과 폴더를 반환하면 안 되나요?
답변1
긴 이야기 짧게
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/.
더 많은 예시
디렉토리 구조 예
test1
├── .hidden
└── normal.txt
0 directories, 2 files
다음 명령을 시도해 보세요
루트 폴더와 모든 내용.
7za a test1_a.7z ~/test1/
주어진
Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2017-08-06 09:23:51 D.... 0 0 test1 2017-08-06 09:23:44 ....A 0 0 test1/.hidden 2017-08-06 09:23:51 ....A 0 0 test1/normal.txt ------------------- ----- ------------ ------------ ------------------------ 2017-08-06 09:23:51 0 0 2 files, 1 folders
루트 폴더 및 숨겨진 파일 없음
7za a test1_b.7z ~/test1/*
주어진
Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2017-08-06 09:23:51 ....A 0 0 normal.txt ------------------- ----- ------------ ------------ ------------------------ 2017-08-06 09:23:51 0 0 1 files
루트 폴더는 없지만 숨겨진 파일이 포함되어 있습니다(우리가 일반적으로 원하는 것임).
7za a test1_c.7z ~/test1/.
주어진
Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2017-08-06 09:23:44 ....A 0 0 .hidden 2017-08-06 09:23:51 ....A 0 0 normal.txt ------------------- ----- ------------ ------------ ------------------------ 2017-08-06 09:23:51 0 0 2 files
답변2
단일 디렉토리의 내용을 원하는 경우 쉬운 방법은 먼저 해당 디렉토리로 변경하는 것입니다.
cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .
당신이 보고 있는 것은 *
그것이 not 로 확장된다는 것입니다 .
. 이것은 문서화된 동작이며 이름이 a로 시작하는 파일이 숨겨져 있다고 말하는 주된 이유입니다 .
(다른 하나는 ls
기본적으로 표시되지 않는다는 것입니다).
디렉토리의 모든 파일을 나열하는 정말 편리한 이식 가능한 방법은 없습니다. 당신은 그것을 사용할 수 있습니다
~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*
그러나 패턴 중 하나와 일치하는 파일이 없으면 패턴은 확장되지 않은 상태로 유지됩니다. Bash에서는 dotglob
행간을 특수하게 처리하지 않도록 옵션을 설정할 수 있습니다 .
( .
그리고 ..
여전히 일치에서 제외됩니다).
shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
extglob
ksh 또는 이 옵션이 설정된 경우 bash에서 (또는 이 ksh_glob
옵션이 설정된 경우 zsh에서) .
및 다음을 제외한 모든 파일과 일치하는 패턴을 작성할 수 있습니다 ..
.
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/@(..?*|.[!.]*|*)
.
zsh에는 스키마에서 특별한 처리가 수행되지 않아야 한다고 말하는 더 간단한 방법이 있습니다 .
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*(D)
답변3
아니요, *
모든 파일이 반환되어야 하는 것은 아닙니다. 보이는 것만 반환합니다.
더 간단한 해결책은 다음과 같습니다.
cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .
답변4
7z(Linux)를 사용하여 zip 아카이브를 추출했는데 폴더가 zip으로 가득 차 있습니다.
나는 다음을 사용했습니다 :
7z x *.zip -o* to extract the zip files
알아내야 할 사항: 7z a {위 명령의 폴더} -r
위 사항을 염두에 두고 7z a 명령을 사용하지만 추출 섹션에서 생성된 폴더 이름을 사용하여 7z 아카이브를 생성하고 싶습니다. 그럼 우리는 어떻게 해야 합니까?