/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
로컬 시스템 필요 (read
RE와 비교 시)- 인증서 기반 인증을 적극 권장합니다(비밀번호가 반복적으로 필요하지 않음).
$rpath
큰따옴표나 작은따옴표를 포함할 수 없습니다.
find
원격 시스템에서 GNU를 사용할 수 없는 경우 simple 로 -print0
바꾸고 -print
조정할 수 있습니다 . 그러나 "이상한" 디렉터리 이름(예: 제외해야 하는 디렉터리 이름)을 사용하면 예기치 않게 수행될 수 있습니다.read -r -d '' item
read -r item
$'123\ntext\n456'