О вашей проблеме:
echo -n | something
в большинстве случаев не поможет. Он ничего не выводит и не передает ничего в другое.
Ваше решение - echo -n $(something)
, потому что оно запускает something
, а затем выводит этот вывод без завершающего символа новой строки .
for f in *.*
do
echo -n $(ls $f | rev | sed 's/^[^.]*//g'| sed 's/^.//' | rev)
echo -n " ima koncnico "
ls $f | rev | cut -d . -f1 | rev
done
Я полностью удалил последний echo
, так как вам все равно нужна новая строка, в противном случае все файлы - это одна строка.
Способ написать это, возможно, более четко это будет выглядеть так:
for f in *.*
do
NAME=$(ls $f | rev | sed 's/^[^.]*//g'| sed 's/^.//' | rev)
EXT=$(ls $f | rev | cut -d . -f1 | rev)
echo "$NAME ima koncnico $EXT"
done
О лучшем методе в целом:
Весь конвейер на самом деле не нужен - есть более простые способы. Как отметил пользователь oguz ismail в своем ответе, вы можете использовать расширение параметра .