在名称/文件夹中包含空格的Zip文件

时间:2014-09-02 20:39:32

标签: bash whitespace zipfile

好的,所以我在这里花了几个小时处理一个愚蠢的问题。 我需要制作一个bash脚本,其中包括拉链文件夹的内容。 好吧,没什么大不了的,zip filename.zip文件可以解决问题。问题是创建文件夹的人在文件夹的名称中放置了一些空格。如果我不在脚本上,我会使用“\”来轻松地转义文件夹中的空格,目录在var中。 这使得它更容易理解,这里是脚本和文件夹结构:

#!/bin/bash
find /dados/Pedagogico/RaquelRejane/teste -mindepth 1 -maxdepth 1 -type d '!' -exec test -e "{}/feito" ';' -print | while read dir
do
  mkdir "$dir/modificado"
  mogrify -path "$dir/modificado" -resize 800x600 "$dir/*.JPG"
  mogrify -path $dir"/modificado" -resize 800x600 $dir"/*.jpg"
  mogrify -path $dir"/modificado" -resize 800x600 $dir"/*.PNG"
  mogrify -path $dir"/modificado" -resize 800x600 $dir"/*.png"
  zip "$dir/modificado/modificado.zip" "$dir/modificado/*"
  touch "$dir/feito"
done

它完成了它的目的,搜索没有文件feito的文件夹,将一些图像调整到其原始文件夹中的modificado目录中。 之后它应该压缩调整大小的图像。这不起作用。我无法压缩文件夹,我只需要压缩文件。目录是这样的:

total 32
drwxr-xr-x 5 root root  4096 Sep  2 17:41 .
drwxrwxrwx 8 root root  4096 Sep  2 10:45 ..
drwxr-xr-x 3 root root 12288 Sep  2 16:26 Laguna - dia 27.8.14 - 4??s anos A ,B e F
drwxr-xr-x 3 root root  4096 Sep  2 16:12 Laguna -dia 20.8.14 -4??s anos E,G e H
drwxr-xr-x 3 root root  4096 Sep  2 16:17 Passeio ao Parque do Meio Ambiente - 2??s anos G e H - 14 e 15.8

我做错了什么?有什么提示吗?

1 个答案:

答案 0 :(得分:1)

我认为你的问题是引用的通配符,因为zip试图只包含一个名为" / dados / Pedagogico / RaquelRejane / teste / abc / modificado / *" (例如)在ZIP存档中。尝试改为

zip -r "$dir/modificado/modificado.zip" "$dir/modificado"

zip "$dir/modificado/modificado.zip" "$dir"/modificado/*

要防止包含ZIP存档本身,我会将ZIP存档放在其他目录中,或通过-x选项排除ZIP存档:

zip "$dir/modificado/modificado.zip" "$dir"/modificado/* -x "$dir"/modificado/modificado.zip