2014-09-02 232 views
0

好的,在這裏我花了數小時在一個愚蠢的問題。 我需要製作一個bash腳本,其中包括壓縮文件夾的內容。 好的,沒什麼大不了的,zip filename.zip文件可以做到這一點。問題是創建文件夾的人在文件夾的名稱中加入了一些空格。如果我不在腳本中,並使用var中的目錄,我會使用「\」輕鬆地轉義文件夾中的空格。 容易理解的牌子,這裏的腳本和文件夾結構:名稱/文件夾中帶有空格的Zip文件

#!/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 

我在做什麼錯?有小費嗎?

+0

1.您是否嘗試將ZIP壓縮文件包含在內? - modificado.zip位於子目錄modificado /中。2.在第二個參數中刪除通配符並使用-r選項。 – Jdamian 2014-09-02 20:50:51

回答

0

我認爲你的問題是引用的通配符,因爲zip試圖在ZIP壓縮文件中只包含一個名爲「/ dados/Pedagogico/RaquelRejane/teste/abc/modificado/*」的文件。嘗試代替

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 
+1

好得多。甚至是「zip」$ dir/modificado/modificado.zip「」$ dir「/ modificado/*。ext' – 2014-09-02 20:56:27

+0

完美!我知道報價是問題!它像一個魅力一樣工作! – 2014-09-08 13:24:38

相關問題