"zipinfo"를 사용하여 비재귀적으로 아카이브의 내용 나열

"zipinfo"를 사용하여 비재귀적으로 아카이브의 내용 나열

zipinfo아카이브의 내용을 비재귀적으로 나열하기 위해 명령에 전달할 수 있는 플래그가 있습니까 ?

예를 들어, 대상 아카이브에 3개의 디렉터리가 있고 각 디렉터리에는 5개의 빈 디렉터리가 포함되어 있는 경우 명령이 15개의 요소를 반환하는 것이 아니라 3개의 "맨 위" 또는"첫 번째 수준" 목차입니다.

이것이 어떻게 달성될 수 있습니까?

답변1

zip 파일 형식의 경우 "재귀적"이지 않습니다. 여기에는 이름에 슬래시(또는 더 일반적으로는 경로 구분 기호)가 포함된 파일 목록만 있습니다.

따라서 실제로 zip에는 15개의 "플랫" 항목(15개의 "리프" 디렉터리)이 있습니다. 위의 디렉터리는 해당 디렉터리에 대한 경로의 일부이므로 암시적입니다.

따라서 모든 최상위 디렉토리를 찾으려면 거쳐야 할모두항목을 선택하고 첫 번째 경로 구성 요소를 추출한 다음 중복 항목을 제거합니다.

zipinfo -1 | sed -n 's;\([^/]*\)/.*;\1;p' | sort -u

몇 가지 주의할 점이 있습니다

  • 파일 이름에 줄 바꿈이 있을 때 zipinfo가 어떻게 작동하는지 모르겠습니다.
  • 컴퓨터 간에 파일을 이동하는 경우 권한, 희소성, 소유권 등이 필요합니다.zip은 올바른 도구가 아닙니다, 이런 일을 할 수 없기 때문입니다. 또는 유사한 도구를 사용하여 다음을 mksquashfs수행할 수 있습니다.아카이브 만들기일반적으로 압축이 더 좋으며 즉시 사용하거나 udisksctl loop-setup -f archive.squashfs(원하는 경우 udisksctl mount /dev/loopN) 직접 설치할 수 있으며 mkdir mntdir; sudo mount -o loop archive.squashfs mountdir, 그런 다음 ls즐겨 사용하는 파일 브라우저에서 일반적인 파일 관리를 사용하여 거의 무료로 내용을 검사할 수 있습니다.

관련 정보