Unison:特定のサブディレクトリにあるファイルを除いて、* .extを持つすべてのファイルを無視します。

Unison:特定のサブディレクトリにあるファイルを除いて、* .extを持つすべてのファイルを無視します。

Unison(2.40.102)を使用して同期を実行しようとしていますが、特定の拡張子を持つすべてのファイル(例:)を無視したいが、特定のサブフォルダにある*.ext場合は、この拡張子を持つファイルは無視したいと思います。

フォルダ構造:

main_dir
|file.ext
|...
|--sub_dir_1
   |more_files.ext
   |...
|--sub_dir_2
   |even_more_files.ext
   |...
   |--dir_I_want_to_sync
      |sync_this_file1.ext
      |...
      |sync_this_fileN.ext
      |--some_arbitrarily_named_dir
         |also_sync_this.ext
         |...
         |--more_arbitrarily_named_dirs_with_ext_files_in_them
            |...

フォルダ構造が一定ではないため、特定のパスを無視することはできず、非常に一般的にする必要があります。私の考えは最初に拡張子を持つすべてのファイルを無視して*.extから無視しない以下のものdir_I_want_to_sync。しかし、正しいコマンドが見つからない場合...

私の設定ファイルの関連部分は次のとおりです。

# Ignore all files with extension *.ext
ignore = Name {.,}*{.ext}

# Try to not ignore the files within the subdirectory (NOT WORKING)
ignorenot = Path */dir_I_want_to_sync/*             # 1)
ignorenot = Name */dir_I_want_to_sync/{*/}*{.ext}   # 2)

説明:
1)ファイルは親エントリによって無視されるため、何もしません。名前、そのパスの代わりに
2)ペアのすべてのファイルを無視することを元に戻すことですが、dir_I_want_to_syncすべてのサブフォルダをキャプチャするわけではありません。

ignorenot = Name ...特定の名前のディレクトリの下にあるディレクトリ構造の深さに関係なく、ファイルに適用する方法はありますか?

(これはとても混乱しないことを願っています。喜んで説明します!)

答え1

任意のディレクトリの深さを一致させる必要がある場合は、代わりRegexに使用してください。Path

ignore = Name *.ext
ignorenot = Regex .*/dir_I_want_to_sync/.*\.ext

関連情報