$'\r' указывает на то, что строки в вашем rgb_train_ids.txt иметь окончание строки в стиле DOS, состоящее из двухсимвольной последовательности CRLF. Linux ожидает, что файлы будут использовать только LF. Вы можете преобразовать файл с помощью dos2unix утилиту или удалить символы CR с помощью тр или же сед Например.
Кроме того, зацикливание строк с использованием для файла в $(cat rgb_train_ids.txt) это плохая практика - если строки содержат пробелы или другие специальные символы оболочки, произойдет сбой. Вам следует рассмотреть возможность использования пока вместо этого цикл:
в то время как IFS= читать -r файл; делать
mv "$file.png" Поезд/
сделано < <(tr -d '\r' < rgb_train_ids.txt)
Отставание / на Тренироваться/ является мерой безопасности, которая приведет к мв команда для ошибки, если каталог Тренироваться не существует - вместо непреднамеренного переименования каждого файла. В качестве альтернативы вы можете использовать mv -t Поезд "$file.png" сделать это явным, что Тренироваться это целевой каталог.
Смотрите также
Вы также можете рассмотреть возможность использования xargs а не цикл оболочки:
tr -d '\r' < rgb_train_ids.txt | xargs -d '\n' mv -t Поезд