Zip 명령은 파일의 압축을 풀 때 디렉터리를 생성합니다.

Zip 명령은 파일의 압축을 풀 때 디렉터리를 생성합니다.

스크립트에서 zip 파일을 생성하고 스크립트를 실행하고 대상 폴더로 이동하여 스크립트에서 생성한 zip 파일의 압축을 풀면 디렉터리가 생성되고 해당 디렉터리에 파일의 압축이 풀립니다.

아래는 스크립트의 코드입니다.

for fname in `cat $Filenm`
 do
  echo $fname
  fnme=$(echo ${fname}|awk -F\/ '{print $8}')
  echo $fnme>>$scriptLog
  tofilename="${date_new}_${fnme}"
   zip -r $tofilename.zip $fileDir/$fnme
  rm $fileDir/$fnme
  mv $tofilename.zip $todir

$todir스크립트를 실행하고 압축을 풀면 거기 에 파일이 $tofilename.zip생성되고 압축이 풀리므로 텍스트 파일을 보려면 5개의 하위 디렉터리로 이동해야 합니다 $fileDir.$todir$todir

zip 파일에서 텍스트 파일의 압축을 풀고 싶지만 $todir그런 방식은 아닙니다.

미리 감사드립니다.

답변1

디렉토리 이름을 버리고 파일 이름만 유지하는 -j옵션 zip( "쓰레기 경로"를 의미)을 사용할 수 있습니다 .-j

또한 단일 파일 이름을 전달하므로 해당 -r옵션( "디렉터리로 재귀") 이 필요하지 않습니다 ( 전체 디렉터리 트리를 zip 파일에 저장하려는 경우 유용함).-r-r

따라서 이 줄은 디렉터리 이름 없이 zip 파일로 파일을 저장하기에 충분합니다.

zip -j $tofilename.zip $fileDir/$fnme

또 다른 옵션은 전체 디렉토리 경로를 zip 파일에 계속 저장하고 파일 압축을 풀 때 명령에 unzip옵션을 전달하여 이를 삭제하는 것입니다 -j. 이는 압축할 때 이 옵션이 작동하는 방식과 유사합니다.

관련 정보