숫자 이름이 있는 폴더만 복사

숫자 이름이 있는 폴더만 복사

/dir/많은 폴더가 포함된 디렉터리 가 있다고 가정해 보겠습니다 . 일부 폴더 이름은 숫자 등입니다 1, 2, 64346, 2353, 3. 일부에는 고전적인 이름 some_name, some_other_name, another_name등이 포함되어 있습니다. 이름에 숫자만 있는 디렉토리를 원격에서 로컬 호스트로 복사하는 방법은 무엇입니까?

비슷한 걸 찾고 있어요scp -r username@host:/dir/[all_numerical_names] .

어떤 아이디어라도 감사하겠습니다

답변1

나는 원격 파일/디렉토리 이름을 전체 번호와 같은 기준에 일치시킬 방법이 없다는 것을 알고 있습니다. 하지만, 당신이 그것을 사용하고 있기 때문에, scp그것도 사용 가능하다고 가정하는 것이 ssh합리적으로 보입니다 . 이를 바탕으로 문제 해결 방법을 고려하겠습니다.

rhost="user@remoteHost"    # Fix as appropriate
rpath="/dir"               # Likewise

ssh -qn "$rhost" "find '$rpath' -maxdepth 1 -type d -print0" |
    while IFS= read -r -d '' item
        do
            if [[ "$item" =~ ^(.*/)?[0-9]+$ ]]
            then
                # Numeric directory
                echo "Copying $item" >&2            # Optional
                scp -r "$rhost":"$rpath/$item" .    # Maybe -a instead of -r
            fi
        done

지침

  • find원격 시스템에 GNU가 필요합니다(의 경우 -print0).
  • bash로컬 시스템 필요 ( readRE와 비교 시)
  • 인증서 기반 인증을 적극 권장합니다(비밀번호가 반복적으로 필요하지 않음).
  • $rpath큰따옴표나 작은따옴표를 포함할 수 없습니다.

find원격 시스템에서 GNU를 사용할 수 없는 경우 simple 로 -print0바꾸고 -print조정할 수 있습니다 . 그러나 "이상한" 디렉터리 이름(예: 제외해야 하는 디렉터리 이름)을 사용하면 예기치 않게 수행될 수 있습니다.read -r -d '' itemread -r item$'123\ntext\n456'

관련 정보