переименование файлов

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

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

Alex181
Сообщения: 44
ОС: Linux RH

переименование файлов

Сообщение Alex181 »

всем доброго дня!
задачка у меня, надо переименовать файло, причем в названии файла поменять всего две буквы
201003311200101010600001_D_3_SNMPCNS3_SNMPANS3_F_0_0_0_0_0.msg
сначала А на L потом С на А
или же сразу как то добавить нужное окончание к 201003311200101010600001
делаю так

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

for file in `ll | awk -F " " '{print $9}'`; do  mv $file  `$file | sed 's/A/L/g'`; done

говорит

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

-bash: 201003311100101010600001_D_3_SNMPCNS3_SNMPANS3_F_0_0_0_0_0.msg: command not found

что можете порекомендовать, заранее благодарю!
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: переименование файлов

Сообщение t.t »

Shell

rename s/A/L/g *


Только учтите, что есть две разных утилиты rename. Вам нужна та, что на перле написана.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Luinnar
Сообщения: 246
ОС: Solaris, Debian, Ubuntu

Re: переименование файлов

Сообщение Luinnar »

Alex181 писал(а):
31.03.2010 17:33
делаю так

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

for file in `ll | awk -F " " '{print $9}'`; do  mv $file  `$file | sed 's/A/L/g'`; done

говорит

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

-bash: 201003311100101010600001_D_3_SNMPCNS3_SNMPANS3_F_0_0_0_0_0.msg: command not found

потому что нужно так:
`echo "$file" | sed 's/A/L/g'`

[+] и лучше $file везде в двойные кавычки заключать, т.к. в имени фала могут быть пробелы.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: переименование файлов

Сообщение drBatty »

Alex181 писал(а):
31.03.2010 17:33
сначала А на L потом С на А

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

 ls | sed -r 'h;s/A/L/;T;s/C/A/;T;G;s/(.*)\n(.*)/ln "\2" "\1"/e'


t.t писал(а):
31.03.2010 18:09
rename s/A/L/g *

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

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: переименование файлов

Сообщение SLEDopit »

drBatty писал(а):
31.03.2010 18:44
а C на A?
Очевидно, по аналогии (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
Luinnar
Сообщения: 246
ОС: Solaris, Debian, Ubuntu

Re: переименование файлов

Сообщение Luinnar »

Alex181 писал(а):
31.03.2010 17:33
сначала А на L потом С на А

А это проще всего так:

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

echo "$file" | tr AC LA
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: переименование файлов

Сообщение t.t »

drBatty писал(а):
31.03.2010 18:44
t.t писал(а):
31.03.2010 18:09
rename s/A/L/g *
а C на A?
Я не совсем понял пояснения, что нужно сделать, поэтому дал по аналогии с написанным.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: переименование файлов

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

drBatty писал(а):
31.03.2010 18:44
t.t писал(а):
31.03.2010 18:09
rename s/A/L/g *

а C на A?
$ rename 's/A/L/g;s/C/A/g' *

Luinnar писал(а):
31.03.2010 19:35
Alex181 писал(а):
31.03.2010 17:33
сначала А на L потом С на А

А это проще всего так:

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

echo "$file" | tr AC LA

забавное переименование. не переименовывающее ни одного файла.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Luinnar
Сообщения: 246
ОС: Solaris, Debian, Ubuntu

Re: переименование файлов

Сообщение Luinnar »

sash-kan писал(а):
31.03.2010 21:54
Luinnar писал(а):
31.03.2010 19:35
Alex181 писал(а):
31.03.2010 17:33
сначала А на L потом С на А

А это проще всего так:

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

echo "$file" | tr AC LA

забавное переименование. не переименовывающее ни одного файла.

А то, как использовать написанную мною команду для переименовывания файла, осталось в качестве домашнего задания. ;)
Спасибо сказали: