스크립트에서 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
. 이는 압축할 때 이 옵션이 작동하는 방식과 유사합니다.