Переименовать множество папок..

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

fergios
Сообщения: 512
ОС: debian stable

Переименовать множество папок..

Сообщение fergios »

есть папки в папке:
asd.test.te
dfg.test.te
ghj.test.te

нужно переименовать их в:
asd.test.com
dfg.test.com
ghj.test.com

их много, поэтому нужно какое то решение в одну строку.

я пробовал mv *test.te *.test.com не работает.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5405
ОС: Gentoo

Re: Переименовать множество папок..

Сообщение /dev/random »

man rename
или
man mmv
Спасибо сказали:
Аватара пользователя
BURF
Сообщения: 479
Статус: ZONGO!
ОС: openSUSE 12.1 x64

Re: Переименовать множество папок..

Сообщение BURF »

Код: Выделить всё

rename te com *
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5405
ОС: Gentoo

Re: Переименовать множество папок..

Сообщение /dev/random »

BURF писал(а):
08.05.2011 20:19

Код: Выделить всё

rename te com *

Вот с этим аккуратнее. Есть две утилиты с одинаковым именем - "rename", одинаковым назначением, но совершенно разным синтаксисом. И трудно предсказать, какая из них будет у спрашивающего. Поэтому если даёте пример, то лучше с mmv, а если выбрали rename, то тут уж только отсылайте в маны, поскольку ваш пример может сработать, а может и нет.
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Переименовать множество папок..

Сообщение ZyX »

fergios писал(а):
08.05.2011 17:34
есть папки в папке:
asd.test.te
dfg.test.te
ghj.test.te

нужно переименовать их в:
asd.test.com
dfg.test.com
ghj.test.com

их много, поэтому нужно какое то решение в одну строку.

я пробовал mv *test.te *.test.com не работает.

Если у вас zsh, то это почти правильно:

(created by format.vim)

autoload zmv # Лучше поместить это в zshrc zmv -W '*.test.te' '*.test.com'

Спасибо сказали:
fergios
Сообщения: 512
ОС: debian stable

Re: Переименовать множество папок..

Сообщение fergios »

1.
rename te com *
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "ru_RU.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Bareword "te" not allowed while "strict subs" in use at (eval 1) line 1.


2.у меня нет команды zmv как мне её установить?
os debian
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Переименовать множество папок..

Сообщение sash-kan »

fergios
установите и настройте, в конце концов, locales.

fergios писал(а):
09.05.2011 05:42
debian
скорее всего, у вас используется перловский rename:
$ rename 's/\.te$/.com/' *
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: Переименовать множество папок..

Сообщение ZyX »

fergios писал(а):
09.05.2011 05:42
1.
rename te com *
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "ru_RU.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Bareword "te" not allowed while "strict subs" in use at (eval 1) line 1.


2.у меня нет команды zmv как мне её установить?
os debian

ZyX писал(а):
09.05.2011 01:58
Если у вас zsh

zmv — это shell-функция, написанная на zsh, распространяется вместе с этой оболочкой. Поддерживает самые разные варианты переименования, примеры и документацию см в /usr/share/zsh/$ZSH_VERSION/functions/Misc/zmv. Использовать из bash можно только с помощью конструкции zsh -c "autoload zmv && zmv ...". Лучше перед zmv поставить noglob, чтобы не требовалось экранировать звёздочки и проч.

Если надо посмотреть, что функция собирается сделать, то нужно после zmv поставить флаг -n, команды zmv -n ... | zsh - и zmv ... эквивалентны.
Спасибо сказали:
Аватара пользователя
Babusha
Сообщения: 203
ОС: Убунту

Re: Переименовать множество папок..

Сообщение Babusha »

Код: Выделить всё

$ ruby -e "Dir.entries('./').each { |oldName| newName = oldName.gsub(/test.te/,'test.com'); File.rename oldName,newName }"
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Переименовать множество папок..

Сообщение drBatty »

вы ещё на csh не сделали...
решение-то примитивное:

Shell

$ for n in *.te; do echo mv $n ${n%.te}.com; done mv asd.test.te asd.test.com mv dfg.test.te dfg.test.com mv gddfghj.test.te gddfghj.test.com mv ghj.test.te ghj.test.com

http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: