텍스트 파일 인 done.txt에 뭔가 필요한 파일 경로가 있습니다. 가 여기 내 done.txt의 첫 번째 부분입니다 :이 명령을 실행하면텍스트 파일에서 읽을 때 디렉토리가 변경됩니다.
/data/voice/Voice27Folds/1000/1017_009.flac
/data/voice/Voice27Folds/1000/1017_010.flac
/data/voice/Voice27Folds/1000/1017_013.flac
/data/voice/Voice27Folds/1000/1017_014.flac
/data/voice/Voice27Folds/1000/1017_015.flac
/data/voice/Voice27Folds/1000/1017_020.flac
/data/voice/Voice27Folds/1000/1017_025.flac
/data/voice/Voice27Folds/1000/1017_026.flac
/data/voice/Voice27Folds/1000/1017_027.flac
/data/voice/Voice27Folds/1000/1017_030.flac
.....
가 :
while IFS= read -r var
do
echo "$var"
done < /data/voice/done.txt
을 내가 done.txt 정확하게 일을 얻을 :
그러나/data/voice/Voice27Folds/1000/1017_009.flac
/data/voice/Voice27Folds/1000/1017_010.flac
/data/voice/Voice27Folds/1000/1017_013.flac
/data/voice/Voice27Folds/1000/1017_014.flac
/data/voice/Voice27Folds/1000/1017_015.flac
/data/voice/Voice27Folds/1000/1017_020.flac
/data/voice/Voice27Folds/1000/1017_025.flac
/data/voice/Voice27Folds/1000/1017_026.flac
/data/voice/Voice27Folds/1000/1017_027.flac
/data/voice/Voice27Folds/1000/1017_030.flac
....
, 시도 할 때 :
while IFS= read -r var
do
mv "$var" /data/voice #move all files to this directory
done < /data/voice/done.txt
나는이 같은 디렉토리 관련 오류의 톤을 얻을 :
mv: cannot stat '/data/voice/Voice27Folds/1000/1017_009.flac\r': No such file and directory
mv: cannot stat '/data/voice/Voice27Folds/1000/1017_013.flac\r': No such file and directory
...
나는 올바른 디렉토리 끝에 추가 "\ r에"로 변경되었을 수 있음을 알 수 있습니다. 어떻게 해결할 수 있습니까?
입력 파일을 DOS에서 UNIX 형식으로 변환하십시오. –
그리고 정직하게 말하기 위해'echo'를 신뢰하지 마십시오. –
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html에있는'echo'에 대한 POSIX 사양조차도 대신 printf를 사용하도록 권고합니다 - APPLICATION USAGE와 RATIONALE 섹션을보십시오. (여기서 특별한 상황은'printf'에 비 POSIX 확장을 요구합니다.) –