На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
Alex181
Сообщения: 44
ОС: Linux RH
Сообщение
Alex181 » 31.03.2010 17:33
всем доброго дня!
задачка у меня, надо переименовать файло, причем в названии файла поменять всего две буквы
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
Сообщение
t.t » 31.03.2010 18:09
Только учтите, что есть две разных утилиты rename. Вам нужна та, что на перле написана.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Luinnar
Сообщения: 246
ОС: Solaris, Debian, Ubuntu
Сообщение
Luinnar » 31.03.2010 18:13
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
Сообщение
drBatty » 31.03.2010 18:44
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?
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 31.03.2010 19:32
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
Сообщение
Luinnar » 31.03.2010 19:35
Alex181 писал(а): ↑ 31.03.2010 17:33
сначала А на L потом С на А
А это проще всего так:
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE
Сообщение
t.t » 31.03.2010 19:35
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
Сообщение
sash-kan » 31.03.2010 21:54
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 потом С на А
А это проще всего так:
забавное переименование. не переименовывающее ни одного файла.
Luinnar
Сообщения: 246
ОС: Solaris, Debian, Ubuntu
Сообщение
Luinnar » 01.04.2010 00:05
sash-kan писал(а): ↑ 31.03.2010 21:54
Luinnar писал(а): ↑ 31.03.2010 19:35
Alex181 писал(а): ↑ 31.03.2010 17:33
сначала А на L потом С на А
А это проще всего так:
забавное переименование. не переименовывающее ни одного файла.
А то, как использовать написанную мною команду для переименовывания файла, осталось в качестве домашнего задания.