Переименовать все файлы в каталоге из $filename_h в $filename_half?

Мертвый просто.

Как переименовать

05_h.png
06_h.png

to

05_half.png
06_half.png

По крайней мере, я думаю, это просто, но для Google такого рода трудно, если вы уже не знаете.

Спасибо....

Ответ 1

Просто используйте bash, не нужно вызывать внешние команды.

for file in *_h.png
do
  mv "$file" "${file/_h.png/_half.png}"
done

Не добавляйте #!/bin/sh

Для тех, кто нуждается в одном слое:

for file in *.png; do mv "$file" "${file/_h.png/_half.png}"; done

Ответ 2

Попробуйте выполнить команду rename:

rename 's/_h.png/_half.png/' *.png

Update:

пример использования:

создать некоторый контент

$ mkdir /tmp/foo
$ cd /tmp/foo
$ touch one_h.png two_h.png three_h.png
$ ls 
one_h.png  three_h.png  two_h.png

тестовое решение:

$ rename 's/_h.png/_half.png/' *.png
$ ls
one_half.png  three_half.png  two_half.png

Ответ 3

Вы ищете чистое решение bash? Существует много подходов, но здесь один.

for file in *_h.png ; do mv "$file" "${file%%_h.png}_half.png" ; done

Это предполагает, что единственными файлами в текущем каталоге, которые заканчиваются на _h.png, являются те, которые вы хотите переименовать.

Гораздо более конкретно

for file in 0{5..6}_h.png ; do mv "$file" "${file/_h./_half.}"

Предполагая, что эти два примера являются вашими. файлы.

В общем случае переименование файла в имеет до.

Ответ 4

for f in *.png; do
  fnew=`echo $f | sed 's/_h.png/_half.png/'`
  mv $f $fnew
done

Ответ 5

Используйте утилиту rename, написанную в perl. Возможно, он недоступен по умолчанию, хотя...

$ touch 0{5..6}_h.png

$ ls
05_h.png  06_h.png

$ rename 's/h/half/' *.png

$ ls
05_half.png  06_half.png

Ответ 6

for i in *_h.png ; do
  mv $i `echo "$i"|awk -F'.' '{print $1"alf."$2}'`
done

Ответ 7

Другой подход можно использовать вручную с помощью опции переименования пакетов

Щелкните правой кнопкой мыши файл → Пользовательские команды файлов → Пакетное переименование и вы можете заменить h. с половиной.

Это будет работать с linux-based gui с использованием WinSCP и т.д.

Ответ 8

Используйте утилиту rename:

[email protected]:/tmp/foo $ touch 05_h.png 06_h.png
[email protected]:/tmp/foo $ rename 's/_h/_half/' * 
[email protected]:/tmp/foo $ ls -l
total 0
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 05_half.png
-rw-r--r-- 1 rc rc 0 2011-09-17 00:15 06_half.png