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