2017-07-23 102 views
0

我想寫一個bash腳本,將所有子文件夾壓縮到.cbz文件,而離開頂級文件夾獨立,並且不存檔已壓縮使用7zip的文件夾。Bash腳本歸檔子文件夾與7zip沒有歸檔檔案

這裏是我寫的:

#!/bin/bash 
for folder in /home/angelucifer/Documents/Personal/MangaLib/*/* 
do 
    7z a -mx0 -mmt2 -tzip "${folder%/}.cbz" "$folder" 
    rm -rf "$folder" 
done 

我現在的問題似乎是,它已經將存檔壓縮文件夾,但一切工作正常。

我指定目錄的原因是爲了避免意外歸檔我的個人文件夾中的內容...。

我對這個腳本的意圖是進入我的MangaLib文件夾,並將其中的文件夾的內容存檔,而不會歸檔這些文件夾,這是地址中兩個通配符的用途。然後,它應該刪除原始文件夾,並只保留.cba文件。

此外,問題是我會經常運行此腳本來壓縮任何新添加到我的MangaLib文件夾的子文件夾,但腳本也會壓縮以前存檔的文件夾,這不是我的意圖。

回答

0

使用file命令查找文件類型。然後只壓縮你需要的。

#!/bin/bash 
for folder in /home/angelucifer/Documents/Personal/MangaLib/*/* 
do 
    if ! `file $folder | grep -i zip > /dev/null 2>&1`; then 
    ##Most of the zip utilities contain "zip" when checked for file type. 
    ##grep for the expression that matches your case 

     7z a -mx0 -mmt2 -tzip "${folder%/}.cbz" "$folder" 
     rm -rf "$folder" 

    fi 
done