Unison

Unison:忽略所有帶有 *.ext 的文件,特定子目錄中的文件除外

  • May 12, 2016

我正在嘗試使用 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 ...到文件,無論它在目錄結構中有多深,只要它位於具有特定名稱的目錄下方?

(我希望這不會太令人困惑。我很高興澄清!)

當您需要匹配任意目錄深度時使用Regex而不是。Path

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

引用自:https://unix.stackexchange.com/questions/282745