LINUX.ORG.RU

Ответ на: комментарий от sdio

[чуть не забыл] Ушел за пивом и чипсами :-)

sdio ★★★★★
()
Ответ на: комментарий от raven-den

bash вобщем-то позволяет сделать это гораздо проще, чем заниматься поисками каких-то непонятных программ.

for i in *; do R=`echo $i | sed -re 's/^[0-9]{3}(.*)$/\1/'`; mv $i $R; done

vden ★★
()
Ответ на: комментарий от sdio

Попробую пасиб, надеюсь это поможет

P.S. я rename музыкальные фалйлы, хочется чтоб название сразу начаналось

raven-den
() автор топика
Ответ на: комментарий от vden

> bash вобщем-то позволяет сделать это гораздо проще, чем заниматься поисками каких-то непонятных программ.

> for i in *; do R=`echo $i | sed -re 's/^[0-9]{3}(.*)$/\1/'`; mv $i $R; done

Меня всегда радует на ЛОРе слово "проще" в подобных случаях... Каждый раз думаю - не прикалывается ли коллега?

svu ★★★★★
()
Ответ на: комментарий от svu

>слово "проще" в подобных случаях...

"Simple' is defined from a technical standpoint, not a usability standpoint. It is better to be technically elegant with a higher learning curve, than to be easy to use, and technically crap." -Aaron Griffin

Искать другое определение было лень.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Логично. Жаль только, большинство компутерных пользователей исходят из другого определения.

svu ★★★★★
()
Ответ на: комментарий от svu

проще в том смысле, что "лучше час потерять, а потом за 5 минут долететь". да и глубже узнать используемый инструмент, имхо, лучше, чем провести полдня в поисках какой-то специальной графической утилиты...

опять-таки, написал первое, что пришло в голову. вариант sdio гораздо изящнее :)

vden ★★
()
Ответ на: комментарий от vden

Не буду я с Вами спорить. Только Ваше "лучше" - оно с точностью до вполне определенной системы ценностей (которую я, кстати, разделяю). Помните об этом. Для человека, для которого важно минимальное напряжение мозгов во всем, что не касается его основной деятельности (а иногда и в ней:) - Ваше "лучше" совсем даже не лучше. И навязывать ему эту т.зр. - как минимум непросто.

svu ★★★★★
()
Ответ на: комментарий от vden

из той дискусии что началась, могу только сказать, что Линукс для меня очень интересен но с английским туговато и это сильно тормозит в познании того же линукса.

raven-den
() автор топика
Ответ на: комментарий от svu

>Не буду я с Вами спорить. Только Ваше "лучше" - оно с точностью до вполне определенной системы ценностей

так повода для спора и нет. я полностью согласен с Вашей точкой зрения, и подсказал (а не навязал) всего лишь один из путей решения. устроит - человек воспользуется им, не устроит - продолжит искать графическую переименовывалку.

а по поводу системы ценностей сразу вспоминается "Дзен и искусство ухода за мотоциклом"... :)

vden ★★
()
Ответ на: комментарий от raven-den

>но с английским туговато

бояре глаголют, что это решается посещением языковых курсов за несколько месяцев. или вообще самому по вечерам, если произношение не интересует.

mirage
()
Ответ на: комментарий от raven-den

>надо переименовать 3000 файлов , переименование заключается в >удалении первых 3 цифр в имени файла. rename 's/\d{3}(.+)/$1/g' *

anonymous
()
Ответ на: комментарий от raven-den

Для музыкальных файлов есть еще такая гуевина как easytag, которая умеет и с тэгами работать и переименовывать на твой вкус.

scholz
()
Ответ на: комментарий от vden

> for i in *; do R=`echo $i | sed -re 's/^[0-9]{3}(.*)$/\1/'`; mv $i $R; done

буэ, быдлокод. А теперь сравни производительность с

> find /path/to/muz -type f -maxdepth 1 | sed 's/.*/"&"/; p; s|\(.*/\)[[:digit:]]\{3\}|\1|' | xargs -L2 mv
(`-maxdepth 1' не обязателен, он предотвращает прохождение по подпапкам)

Почему быдлокод?
o	Потому что выполнять _каждую_ итерацию sed(1) будет
	только идиот, ибо это очень сильно затормозит процесс. Более
	эффективно будет пройтись sed'ом только один раз и отправить
	результат mv(1), а при помощи xargs распараллелить
	(опция `-P', в моем примере опущена).

o	Потому что пихать в for(1) список файлов будет только идиот,
	не знающий об ARG_MAX (getconf ARG_MAX = 262144).
	В один прекрасный день сей лимит даст о себе знать в самый
	неподходящий момент.

o	Потому что `mv $i $R' будет делать только идиот, которому
	никогда не попадались файлы с пробелами и прочими служебными
	символами для shell'а. Правильно такое выражение будет взять
	в двойные кавычки `mv "$i" "$R"'.

o	Потому что только идиот будет бездумно использовать \(atom\)
	в регулярных выражениях и не знать как плачевно они влияют
	на производительность. Вместо "sed -re 's/^[0-9]{3}(.*)$/\1/'"
	можно использовать "sed -re 's/^[0-9]{3}//'", результат
	будет тот же, а скорость на порядок выше.

На будущее советую почитать http://partmaps.org/era/unix/award.html
Т.к. подобные ошибки встречаются уже очень давно.

Почему мой пример - быдлокод? Потому что sed должен выводить только изменившиеся файлы.
Скармливать mv файлы без 3-х цифр, чтобы было псевдо переименование и лишняя нагрузка
будет только идиот. Впрочем, я не исключал, что тоже один из них. ,)

anonymous
()

в thunar удобная утилита.

S_Paul ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.