내 로컬 컴퓨터의 원격 서버에 있는 일부 비디오를 변환해야 합니다.
내가 하는 일은:
- SSH를 사용하여 파일 목록 가져오기
- 루프에서 항목을 하나씩 다운로드하고 처리합니다.
문제는 이러한 파일에 공백이 있다는 것입니다.
나는 이 접근법을 시도했다
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"