원격 서버의 파일을 로컬로 반복합니다.

원격 서버의 파일을 로컬로 반복합니다.

내 로컬 컴퓨터의 원격 서버에 있는 일부 비디오를 변환해야 합니다.

내가 하는 일은:

  1. SSH를 사용하여 파일 목록 가져오기
  2. 루프에서 항목을 하나씩 다운로드하고 처리합니다.

문제는 이러한 파일에 공백이 있다는 것입니다.

나는 이 접근법을 시도했다

filels=`ssh $USER@$SERVER ls "$FOLDER*.avi"`
IFS='\n'
for f in $filels; do
    echo "$f"
done

하지만 여전히 작동하지 않습니다. 단일 파일 이름은 다음과 같이 세 부분으로 나뉩니다.

My super very
long filename
is splitted

가장 좋은 접근 방식은 무엇입니까?

답변1

이름을 인용해 보세요엘에스그리고 bash 배열을 사용하여:

#!/usr/bin/env bash

filels="( $(ssh $USER@$SERVER ls -Q "$FOLDER*.avi") )"
IFS='\n' for f in $filels; do
echo "$f" done

엘에스옵션

-Q, --quote-name
          enclose entry names in double
          quotes

아니면 당신이 가지고 있다면동기화:

~$ rsync -var --progress $USER@$SERVER:/PATH_TO_FOLDER/*avi ./
# do anything with files

답변2

while이 문자열을 루프와 함께 사용할 수도 있습니다 .

filels=`ssh $USER@$SERVER ls "$FOLDER*.avi"`

while read f 
do 
    echo "${f}"
done <<< "$filels"

관련 정보