既存のアーカイブを除いて、ディレクトリからファイルの7zipアーカイブを作成するにはどうすればよいですか?

andiOak

すべてのzipファイルとすべての7z / 7zipファイルを除いルート/現在のフォルダー内のすべてのファイル7zipたい1つのステートメントで一度に機能させることができるのはこれらのうちの1つだけですif !

for file in ./test2/*
do

    if ! { `file $file  | grep -i zip > /dev/null 2>&1` && `file $file  | grep -i 7z > /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 "${file%/}.cbz" "$file"
      rm -rf "$file"

    fi
done

私は{list;};他の投稿の「リスト」基準に従いましたが、運がありません。


私の現在の解決策は、次のようにステートメントネストする ifことです。

for file in ./test2/*
do
    if ! `file $file  | grep -i 7z > /dev/null 2>&1`; then 

        if ! `file $file  | grep -i zip > /dev/null 2>&1`; then 
        ## first if its not 7z, now also if not zip.

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

        fi

    fi

done

残っているのは、ディレクトリを除外することだけです。すべてのファイルが移動します。方法?

クサラナンダ

の出力をfile個別に取得し、それを複数のテストまたはcaseステートメントで使用します。

for file in ./test2/*; do
    filetype=$( file "$file" )

    if [[ $filetype == *7z*  ]] ||
       [[ $filetype == *zip* ]]
    then
        # skip these
        continue
    fi

    # rest of body of loop here
done

または、

for file in ./test2/*; do
    filetype=$( file "$file" )

    case $filetype in
       *7z*)  continue ;;  # skip these
       *zip*) continue ;;  # and these
    esac

    # rest of body of loop here
done

file自由形式のテキスト文字列の代わりにMIMEタイプを出力することもできます。これはで行うことができfile -i、スクリプトの移植性が少し向上します(気になる場合)。file(1)マニュアル(man 1 file)を参照してください

ディレクトリを除外するには、

if [ -d "$file" ]; then
    continue
fi

への呼び出しの前file

または、短絡構文を使用します。

[ -d "$file" ] && continue

このcontinueステートメントは、上記で使用されているすべての場合において、現在の反復の残りをスキップし、ループの次の反復に進みます。の現在の値がこの反復で処理したくない$fileものであると判断したときに使用してます。これは、操作をいつ実行するについて一連のテストを作成するという、あなたが行うことの反対です

/bin/sh互換スクリプトは最後に次のようになります。

#!/bin/sh

for file in ./test2/*; do
    [ -d "$file" ] && continue

    filetype=$( file "$file" )

    case $filetype in
       *7z*)  continue ;;  # skip these
       *zip*) continue ;;  # and these
    esac

    # rest of body of loop here
done

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

隠しファイルなしでターミナル経由でディレクトリ全体のzipアーカイブを作成するにはどうすればよいですか?

分類Dev

現在のディレクトリにgで始まるすべてのファイルのアーカイブを作成するにはどうすればよいですか?

分類Dev

Antを使用してzipアーカイブ内のファイルの名前を変更するにはどうすればよいですか?

分類Dev

CLIで7zipアーカイブ内のファイルの名前を変更するにはどうすればよいですか?

分類Dev

Perlでディレクトリをアーカイブするにはどうすればよいですか?

分類Dev

gitアーカイブからファイルを除外するにはどうすればよいですか?

分類Dev

アーカイブファイル名に現在の日付を含むRARアーカイブを作成するにはどうすればよいですか?

分類Dev

セキレイのzipアーカイブから画像ギャラリーを作成するにはどうすればよいですか?

分類Dev

ファイルのリストではなく、ディレクトリパスにLibArchiveアーカイブを作成するにはどうすればよいですか?

分類Dev

隠しファイルなしでターミナル経由でディレクトリ全体のzipアーカイブを作成するにはどうすればよいですか?

分類Dev

ヘブライ語の名前のファイルのZIPアーカイブを正しく解凍するにはどうすればよいですか?

分類Dev

サブディレクトリやZIPファイルの内容を含む、ディレクトリ内のすべてのファイルのインデックスを作成するにはどうすればよいですか?

分類Dev

ロックされた(読み取り専用)7zipアーカイブを作成するにはどうすればよいですか?

分類Dev

zip形式のアーカイブから特定のディレクトリに特定のフォルダのみを抽出するにはどうすればよいですか?

分類Dev

OSXでは、特定のファイルを除いて、ターミナルを介してzipアーカイブをどのように作成しますか?

分類Dev

7zを使用して、ディレクトリ内のすべてのファイルとディレクトリ(非表示のものを含む)をアーカイブするにはどうすればよいですか?

分類Dev

tarアーカイブに配置されたファイルの前にディレクトリを追加するにはどうすればよいですか?

分類Dev

ランチャーアイコンをカスタマイズして、ユーザーになる予定のホームディレクトリにいくつかのファイルを追加するにはどうすればよいですか?

分類Dev

ターミナルを使用してアーカイブからディレクトリに移動するにはどうすればよいですか?

分類Dev

指定したディレクトリをアーカイブファイルの目的の場所に作成するにはどうすればよいですか?

分類Dev

別のディレクトリにtarアーカイブを作成するにはどうすればよいですか?

分類Dev

Linuxで複数の7zipアーカイブを同じ名前のフォルダーに抽出するにはどうすればよいですか?

分類Dev

ディレクトリにTARアーカイブと同じファイルが含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

ディレクトリ構造に従って、アーカイブからシステムにファイルをコピーするにはどうすればよいですか?

分類Dev

圧縮してアーカイブに追加することを意図していないディレクトリの7-Zipディレクトリスキャンを無効にするにはどうすればよいですか?

分類Dev

ワイルドカード付きのメイクファイルを使用して、すべてのサブディレクトリ内にファイルを生成するにはどうすればよいですか?

分類Dev

7zip で既存のファイルを上書きするにはどうすればよいですか?

分類Dev

30 GB のファイルをアーカイブするにはどうすればよいですか?

分類Dev

Nodejsでwinstonによって作成されたログファイルのアーカイブを作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    隠しファイルなしでターミナル経由でディレクトリ全体のzipアーカイブを作成するにはどうすればよいですか?

  2. 2

    現在のディレクトリにgで始まるすべてのファイルのアーカイブを作成するにはどうすればよいですか?

  3. 3

    Antを使用してzipアーカイブ内のファイルの名前を変更するにはどうすればよいですか?

  4. 4

    CLIで7zipアーカイブ内のファイルの名前を変更するにはどうすればよいですか?

  5. 5

    Perlでディレクトリをアーカイブするにはどうすればよいですか?

  6. 6

    gitアーカイブからファイルを除外するにはどうすればよいですか?

  7. 7

    アーカイブファイル名に現在の日付を含むRARアーカイブを作成するにはどうすればよいですか?

  8. 8

    セキレイのzipアーカイブから画像ギャラリーを作成するにはどうすればよいですか?

  9. 9

    ファイルのリストではなく、ディレクトリパスにLibArchiveアーカイブを作成するにはどうすればよいですか?

  10. 10

    隠しファイルなしでターミナル経由でディレクトリ全体のzipアーカイブを作成するにはどうすればよいですか?

  11. 11

    ヘブライ語の名前のファイルのZIPアーカイブを正しく解凍するにはどうすればよいですか?

  12. 12

    サブディレクトリやZIPファイルの内容を含む、ディレクトリ内のすべてのファイルのインデックスを作成するにはどうすればよいですか?

  13. 13

    ロックされた(読み取り専用)7zipアーカイブを作成するにはどうすればよいですか?

  14. 14

    zip形式のアーカイブから特定のディレクトリに特定のフォルダのみを抽出するにはどうすればよいですか?

  15. 15

    OSXでは、特定のファイルを除いて、ターミナルを介してzipアーカイブをどのように作成しますか?

  16. 16

    7zを使用して、ディレクトリ内のすべてのファイルとディレクトリ(非表示のものを含む)をアーカイブするにはどうすればよいですか?

  17. 17

    tarアーカイブに配置されたファイルの前にディレクトリを追加するにはどうすればよいですか?

  18. 18

    ランチャーアイコンをカスタマイズして、ユーザーになる予定のホームディレクトリにいくつかのファイルを追加するにはどうすればよいですか?

  19. 19

    ターミナルを使用してアーカイブからディレクトリに移動するにはどうすればよいですか?

  20. 20

    指定したディレクトリをアーカイブファイルの目的の場所に作成するにはどうすればよいですか?

  21. 21

    別のディレクトリにtarアーカイブを作成するにはどうすればよいですか?

  22. 22

    Linuxで複数の7zipアーカイブを同じ名前のフォルダーに抽出するにはどうすればよいですか?

  23. 23

    ディレクトリにTARアーカイブと同じファイルが含まれているかどうかを確認するにはどうすればよいですか?

  24. 24

    ディレクトリ構造に従って、アーカイブからシステムにファイルをコピーするにはどうすればよいですか?

  25. 25

    圧縮してアーカイブに追加することを意図していないディレクトリの7-Zipディレクトリスキャンを無効にするにはどうすればよいですか?

  26. 26

    ワイルドカード付きのメイクファイルを使用して、すべてのサブディレクトリ内にファイルを生成するにはどうすればよいですか?

  27. 27

    7zip で既存のファイルを上書きするにはどうすればよいですか?

  28. 28

    30 GB のファイルをアーカイブするにはどうすればよいですか?

  29. 29

    Nodejsでwinstonによって作成されたログファイルのアーカイブを作成するにはどうすればよいですか?

ホットタグ

アーカイブ