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,它会创建并$fileDir$todir那里解压缩文件,因此$todir我必须进入 5 个子目录才能查看我的文本文件。

我希望将 zip 文件中的文本文件解压缩到 中$todir,但不是按照其发生的方式进行。

提前致谢。

答案1

您可以使用-j选项zip-j表示“垃圾路径”),它将丢弃目录名称并仅保留文件名。

另外,您不需要该-r选项(-r“递归到目录”),因为您向其传递单个文件名(-r当您想要将整个目录树存储到 zip 文件中时,该选项很有用。)

因此,这一行应该足以将文件存储在 zip 文件中,无需目录名:

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

另一种选择是继续将完整目录路径存储在 zip 文件中,并在解压文件时通过向命令传递unzip选项来简单地丢弃它-j,其工作方式与压缩时此选项的工作方式类似。

相关内容