私は何かをする必要のあるファイルのパスを含むテキストファイル、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'を信用しないでください。 –
'echo'のPOSIX仕様でさえ、http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.htmlでは、代わりに' printf'を使うことを勧めます - アプリケーションの使用法とRATIONALEセクションを参照してください。 (ここでの特定の状況では、 'printf'への非POSIX拡張が必要です)。 –