1

Доброго времени суток!
Подскажите как решить задачку.
Есть много файлов file[X] где X какое-то число.
Нужно переименовать file[X] в new[X], число должно остаться неизменным.

2

как то так

 Консоль:
find /some/dir -name "*file*"|xargs rename file new

3

v0id,

DESCRIPTION
       rename  will  rename  the  specified  files by replacing the first occurrence of expression in
       their name by replacement.

OPTIONS
       -v, --verbose
              Give visual feedback which files where renamed, if any.

       -V, --version
              Display version information and exit.

       -h, --help
              Display help text and exit.

EXAMPLES
       Given the files foo1, ..., foo9, foo10, ..., foo278, the commands

              rename foo foo0 foo?
              rename foo foo0 foo??

       will turn them into foo001, ..., foo009, foo010, ..., foo278.  And

              rename .htm .html *.htm

       will fix the extension of your html files.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

4

Так не работает

Bareword "file" not allowed while "strict subs" in use at (eval 1) line 1.
xargs: rename: exited with status 255; aborting

5 (23.09.2014 22:41:50 отредактировано beliy)

Немного грубо но для вашей задачи подойдет:

 Консоль:
#!/bin/bash

_SOURCEDIR="/home/user/test" # в какой папке ищем
_FROMNAME="file" # что нужно заменить в файле
_TONAME="new" # на что нужно заменить

find $_SOURCEDIR/$_FROMNAME* -type f | while read F; do
    mv -vf "$F" "$(dirname "$F")/$(basename "$F" | sed 's|'$_FROMNAME'|'$_TONAME'|')";
done

6

v0id пишет:

Так не работает

man rename читали? Ну вот и не работает.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

7

Всем спасибо!
Решил задачу, с помощью команды:

rename 's/file/new/' *file*