Хотя это более старый пост, недавно я столкнулся с той же проблемой. Поскольку у меня были все файлы для переименования внутри / tmp / blah_dir /, так как каждый файл в этом каталоге имел завершающий символ "/ r" (с символом "?" В конце файла), так что делать это способом сценария было только о чем я мог думать.
Я хотел сохранить конечный файл с тем же именем (без конечного символа).
С sed проблема была в имени выходного файла, которое мне было необходимо, чтобы упомянуть что-то еще (чего я не хотел).
Я пробовал другие варианты, как предложено здесь (не рассматривал dos2unix из-за некоторых ограничений), но не работал.
Я попытался, наконец, с "awk", который работал там, где я использовал "\ r" в качестве разделителя, и взял первую часть :
Хитрость:
echo ${filename}|awk -F"\r" '{print $1}'
Ниже фрагмента скрипта, который я использовал (где у меня был весь файл, в качестве завершающего символа в пути / tmp / blah_dir /) использовался "\ r":
cd /tmp/blah_dir/
for i in `ls`
do
mv $i $(echo $i | awk -F"\r" '{print $1}')
done
Примечание: Этот пример не очень точен, хотя и близок к тому, что я работал (упомяну здесь только для лучшего понимания того, что я сделал)