7z は除外ファイルからディレクトリを除外しません。

7z は除外ファイルからディレクトリを除外しません。

Bashスクリプトで7zを使用してアーカイブを作成し、いくつかのディレクトリを除外したいと思います。 1つのアイテムのみを含む除外ファイルを作成しました。

excl_dir/

私のスクリプト:

#!/bin/bash
archiveName="my_archive"
base="/path/to/base"

7z a -mx=9 -t7z [email protected] "${archiveName}.7z" "${base}/files/*"

アーカイブは作成されますが、除外ファイルのディレクトリを使用します。

私が考慮したもの:

  • 除外されたファイルはUTF-8でエンコードされます。
  • 除外ファイルは私のスクリプトと同じディレクトリにあります。
  • 絶対パスと相対パス(/path/to/exclude.lstつまり./exclude.lst
  • ファイル形式を除外: excl_dir/, excl_dir/*, 項目を折り返す

除外ファイルのエントリは正しいですか?それでは質問がありますか?

編集する:

7zは、実際にExcept.lstのエントリが.のみの場合にexcl_dirフォルダを除外します。名前にこの文字列を含むすべてのファイルにも同様です。

答え1

7zパターンだけを除いて、末尾のスラッシュを無視するようです。回避策として除外するのではなく、含めるファイルのリストを渡してください。

find . -not -path './excl_dir/*' -not -path './excl_dir' > /tmp/include.lst
7z a -mx=9 -t7z -i@/tmp/include.lst foo.7z 

これはのバグのようです7z

関連情報