我在脚本中创建一个 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
,其工作方式与压缩时此选项的工作方式类似。