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