$'\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 Поезд