LinuxForum.Fans
Тема

Переименовать файлы по маске, вопросы.

Автор: sbars 11 сообщений 5166 просмотров
#346686

Доброго времени суток уважаемые форумчане. Недавно начал работать с ком. строкой на новом для себя уровне и завис на решении задачки.

text
ls -d 1-81/*.jpg | sed 's/.*-//g'

нужно обрезать имена файлов в каталогах, в данном примере у меня получилось вывести нужный мне результат на экран. Но как это теперь переименовать файлы я никак не пойму((

#346689

Возможно, "man rename" поможет движению в правильном направлении?

#346694

К сожалению данной команды нет в моем распоряжении на сервере, где нужно производить переименовывание ((

#346716

Тогда mv. Уж она должна быть.

Пётр.

#346719

если с помощью sed'а, то решается чем-то вроде:
ls *.jpg | sed 's!\(*.jpg\)!mv \1 my-\1!ge'

если средствами bash'а, то как-то так:
ls *.jpg | wihle read f; do mv "$f" "my-$f"; done

ЗЫ: вместо ls'а лучше использовать find.

#346916
"Fat-Zer" написал:
ЗЫ: вместо ls'а лучше использовать find.

а почему вы не использовали find???

Вообще -- странно, чем лучше

и да, примеры: http://emulek.github.io/sed/ch04s12.html

#347137

победил, решалось:

for file in *; do
mv "$file" "`sed 's/.*-//' <<< "$file"`";
done



Но появилась новая задачка. нужно в текстовом файле qqq-www-rrr-vvv|2-3/
заменить все "-" на пробел до "|" тоесть после пайпа не трогать. перекопал много. ответа нет



З.Ы.

"Fat-Zer" написал:
ls *.jpg | wihle read f; do mv "$f" "my-$f"; done

не wihle , а while ))))

#347235

"sbars" написал:
Но появилась новая задачка. нужно в текстовом файле qqq-www-rrr-vvv|2-3/
заменить все "-" на пробел до "|" тоесть после пайпа не трогать. перекопал много. ответа нет
ну сразу видно, что вы не читали мою книжку с картинками...
text
echo "qqq-www-rrr-vvv|2-3/---"|\
sed 'h;s/|.*//;s/-/ /g;G;s/\n.*|/|/'
qqq www rrr vvv|2-3/---
#347236
"sbars" написал:
mv "$file" "`sed 's/.*-//' <<< "$file"`";

замените `` на $(). Оно работает только в баше, за то допускает вложенность.

#347308
"drBatty" написал:
ну сразу видно, что вы не читали мою книжку с картинками...

К сожалению не пускает туда, один раз попал, но потом начало перекидывать через трафикброкера на левые сайты.

echo "qqq-www-rrr-vvv|2-3/---"|\
sed 'h;s/|.*//;s/-/ /g;G;s/\n.*|/|/'
qqq www rrr vvv|2-3/---

у меня "qqq-www-rrr-vvv" - эта часть меняется для каждой строки

тоесть задача "заменить в каждой строке '-' на пробел до пайпа"

#347313
"sbars" написал:
К сожалению не пускает туда, один раз попал, но потом начало перекидывать через трафикброкера на левые сайты.

вот github http://emulek.github.io/sed/index.html

"sbars" написал:
qqq www rrr vvv|2-3/---

у меня "qqq-www-rrr-vvv" - эта часть меняется для каждой строки

тоесть задача "заменить в каждой строке '-' на пробел до пайпа"

ну моя команда именно так и делает:

1. сохраняет строку

2. вырезает всё после |

3. меняет все "-"

4. склеивает строку с копией

5. вырезает из результата склейки кусок до |

Что вам не нравится? Можете сделать как-то по другому. ИМХО это самый простой и логичный способ (да, есть другие)

Войдите или зарегистрируйтесь, чтобы ответить.