Если вы хотите сохранить тот же код, что и у вас в настоящее время, я предлагаю использовать SED
немного больше к его емкости:
i="`sed -n 's/'$'\r''//;s/,/ /g;s/values=//gp' /usr/local/app1/default.conf`"
for data in $i; do
cp -rvp /usr/local/dir1/$data.png /home/user1/dir1
done
Как это работает:
-N
Флаг к SED SED
говорит ему не печатать строки автоматически
/ $ '\ R' //
Удаляет символы \ R
Это, вероятно, вызывает ваши проблемы P
в конце в конце S / значения = // GP
Заявление печатает буфер только в том случае, если бы была сделана замена (только если Значения =
присутствовали на линии) Вообще-то я не получил ваш случай использования, но все, что я понял, это то, что вы хотите найти файлы .png
из каталога и скопировать эти файлы в другой каталог. Если мое понимание вашего случая использования верно, то нижеприведенная команда помогает,
найти /home/your/source/path/ - name \*.png -exec cp {} /home/your/destination/path/ \;
Вы, вероятно, отредактировали этот файл default.conf на машине Windows и скопировали его. Кажется, что в конце этой строки перед новой строкой есть дополнительный символ. Попробуйте использовать od -c default.conf
. Вероятно, это даст вам что-то вроде:
0000000 v a l u e s = w a d s s e a
0000020 d s e d a o k a w w a s w
0000040 022 \n
0000042
Отредактируйте файл, чтобы удалить символ 022
(который равен \ r
), и повторите попытку.