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

관련 정보