2017-01-23 1 views
1

웹 디렉토리에 저장된 jpg에 대한 파일 이름으로 GUID를 생성하는 웹 서버가 있습니다. GUID를 포함 하이픈의 일부는, 예는 다음과 같습니다Bash - 텍스트 파일 읽기, 하이픈 제거 및 파일 복사

34bc9ead-f8f0-467d-8605-df77f392da07.jpg

그런 다음이 들어있는 서버에 저장된 텍스트 파일을 생성하는 목록에있는 모든 JPG를하고 라즈베리 파이 클라이언트에서이

www.awebsite.com/img/34bc9ead-f8f0-467d-8605-df77f392da07.jpg

과 같을 것이다,이 txt 파일과 이미지를 얻을 수 wget을 실행합니다. 그런 다음 해당 이미지를 다른 드라이브에 복사해야합니다.

bash를 실행하여 텍스트 파일을 읽는 경우 파일 이름 만 제외하고 CP를 사용하여 파일을 복사하면 파일을 복사 할 수 없다는 이상한 오류가 발생합니다. "34bc9ead-f8f0-467d- 8605-df77f392da07.jpg/r "을 참조하십시오. 파일의 끝에 "/ r"이 붙는 것 같습니다.

내 방법이 최적화되지 않았거나 완전히 잘못하고있는 경우 사과를 코딩 할 때 나는 초보자입니다.

while read -r p; do 
[[ "$p" == */* ]] || p="./$p" 
b="${p##*/}" 
cp $b /newdirectory/$b 
done < wget_filelist.txt 
sleep 5 
done; 

단지 wited를 사용하여 파일을 대상 디렉토리로 다운로드 할 수 없습니다. wget을 사용하여 하나의 디렉토리에 넣은 다음 이미지를 램 디스크에 복사하여 다른 작업을 읽습니다.

내가 성공적으로 할 수있는 파일 이름에서 하이픈을 제거하는 것에 대해 생각했지만 달성하려고 시도하는 것을 위해 다른 곳에서 두통을 유발할 것입니다. 그냥 텍스트 파일을 읽고 cp로 전달하면이 이상한 "/ r"이 나타납니다. 어떤 도움

답변

3

파일 wget_filelist.txt에 미리

많은 감사 CRLF(\r) 엔딩 현재 DOS 스타일을 가지고,

dos2unix wget_filelist.txt 

을 실행하여 제거하고 원래의 bash 스크립트를 실행합니다.

+2

캐리지 리턴도 스크립트에서 제거 할 수 있습니다.'sed 's/\ r $ //'wget_file | 읽는 동안 ...; ...; done' –

+0

OP는 $ p에 슬래시가 포함되어 있는지 확인 중입니다. 그렇지 않은 경우 경로 앞에 "./"를 붙입니다. –

+0

@ 글렌 잭맨 : 때로는 가장 단순한 사안이 모든 종류의 복잡한 사례를 생각하게 만듭니다. – Inian