파일 이름 번호가 숫자보다 큰 파일을 재동기화하는 방법은 무엇입니까?

파일 이름 번호가 숫자보다 큰 파일을 재동기화하는 방법은 무엇입니까?

이름 구조가 모두 동일한 수백 개의 폴더가 있습니다. ##*, 00 내의 모든 폴더를 백업하려면 rsync를 사용해야 합니다.한 드라이브의 범위는 15_이고 다른 드라이브의 범위는 16_~99_입니다. rsync에 전달하기 위해 각 목록을 필터링하는 방법은 무엇입니까?

drwxrwxrwx+  10 user  user    4096 Feb 16  2017 07_MrSmith
drwxrwxrwx+   3 user  user    4096 Mar 24 12:55 10_Other_File
drwxrwxrwx+   4 user  user    4096 Aug 23 14:33 15_New_Interesting_folder
drwxrwxrwx+   9 user  user    4096 Aug 31 17:23 16_SimpleFolderNaming
drwxrwxrwx+   3 user  user    4096 May  8 12:53 17_VeryCurious
drwxrwxrwx+   6 user  user    4096 Mar 28 12:38 17_MantinanVinil
drwxrwxrwx+   3 user  user    4096 Mar 28 11:47 17_AnotherFolderWith_Subfolders

하위 집합을 숫자와 비교할 수 있는 "find", "xargs" 또는 "rsync" 명령에 대한 인수를 찾으려고 했지만 해결책을 찾을 수 없습니다.

내가 할 때 :

find -maxdepth 1 -regextype posix-extended -regex '..[0-1][0-5]_*'

00-15 범위의 폴더를 필터링하면 아무것도 반환되지 않습니다.

답변1

그리고 zsh:

rsync ... <0-15>_*(/) somewhere
rsync ... <16->_*(/) somewhere-else

그리고 ksh또는 bash -O extglob또는 zsh -o kshglob:

rsync ... @(0[0-9]|1[0-5])_* somewhere
rsync ... @(1[6-9]|[2-9][0-9])_* somewhere-else

또는 별도의 glob에서 이 작업을 수행할 수 있습니다(두 glob이 어떤 파일과도 일치하지 않으면 오류 메시지가 표시되고 말 그대로 ... rsync라는 이름의 파일이 동기화될 수도 있음 ).0[0-9]_*1[0-5]_*

rsync ... 0[0-9]_* 1[0-5]_* somewhere
rsync ... 1[6-9]_* [2-9][0-9]_* somewhere-else

( glob 한정자는 디렉터리 유형의 파일만 선택하며 bash지원 ksh되지 않습니다 .)(/)

POSIX적으로:

find . ! -name . -prune \( -name '0[0-9]_*' -o -name '1[0-5]_*' \) \
  -type d -exec sh -c 'exec rsync ... "$@" somewhere' sh {} +
find . ! -name . -prune \( -name '1[6-9]_*' -o -name '[2-9][0-9]_*' \) \
  -type d -exec sh -c 'exec rsync ... "$@" somewhere-else' sh {} +

관련 정보