하위 디렉터리와 해당 콘텐츠를 무시하고 상위 디렉터리 콘텐츠의 압축을 풉니다.

하위 디렉터리와 해당 콘텐츠를 무시하고 상위 디렉터리 콘텐츠의 압축을 풉니다.

.zip 파일의 압축을 풀고 있습니다. 이렇게 할 수는 있지만 하위 디렉터리와 해당 콘텐츠는 무시하고 상위 폴더 데이터만 추출해야 합니다.

다음은 zip 파일의 이름 형식입니다.

파일명.csv.zip

내가 사용한 명령은 unzip -j /zip_filepath "*" -d /final_directory입니다.

위 명령을 사용해 보았지만 위 명령은 zip 파일의 일부인 전체 zip 콘텐츠를 모두 추출합니다.

zip 파일의 파일 구조는 아래에서 확인하세요.

  • -rw-r--r-- abc.csv
  • drwxrwxr_x __MACOSX/
  • -rw-r--r-- __MACOSX/_abc.csv

두 번째 zip 파일 구조: *-rw-r--r-- xyz.csv

zip 파일에서 abc.csv 및 xyz.csv 파일만 추출하고 싶습니다.


산출:압축 풀기 -Z -1 abc.zip

__MACOSX/
__MACOSX/_abc.csv
abc.csv

산출:압축 풀기 -Z -1 /user/sam/abc.zip -d /user/sam/2019-05-22/

caution: not extracting -d ignored

    abc.csv
    __MACOSX
    __MACOSX/._abc.csv

여기의 출력은 abc.csv 파일이어야 합니다.

산출:압축 풀기 -Z -1 xyz.zip

xyz.csv

산출:압축 풀기 -Z -1 /user/sam/xyz.zip -d /user/sam/2019-05-22/

caution: not extracting -d ignored
xyz.csv

답변1

-x다음과 같이 옵션을 인수로 사용할 수 있습니다 '*/*'.

unzip filename.csv.zip -x '*/*' -d /final_directory

caution: excluded filename not matched: */*파일과 유사한 상황에서 경고를 표시하지 않으려면 xyz.zip다음을 사용할 수 있습니다.

unzip filename.csv.zip -x '*/*' -d /final_directory 2> /dev/null

노트: 기억하세요. 이렇게 하면 모든 항목이 억제됩니다.표준 에러산출. 그런 종류의 경고를 표시하지 않도록 명령에 지시하는 것이 더 좋습니다 unzip(해당 종류의 경고만). 설명서를 잠깐 살펴봤지만 옵션이 표시되지 않았습니다. 따라서 귀하의 경우 이 경고만 억제하도록 지시할 수 없다면 unzip아무것도 억제하지 않는 것이 더 낫다고 생각합니다. 경고는 아무런 해를 끼치지 않기 때문입니다. 그러나 모든 오류를 삭제하면 중요한 정보를 놓칠 수 있습니다.

관련 정보