LINUX.ORG.RU

Скрипт для переименования


0

0

Задача: переименовать все файлы директории по такой вот маске

имя_староерасширение.dat

...использую два скрипта -- поиск и переименование:

---------------------------------------------------------------
find.sh

# !/bin/bash
#

find . -exec sh rename.sh {} \;
---------------------------------------------------------------

Файлы находит, передает управление rename.sh

---------------------------------------------------------------
#!/bin/bash

fullname=${1##*/}
name="${fullname%.*}"
extention=${name:+${fullname#$name.}}

if [ "$extention" -ne "${%.dat}" ]
then
mv "$fullname" "${name}_${extention:-.}.dat" # выполняем искомый запрос
else
fi
---------------------------------------------------------------

Отличает отрабатывает в том лишь случае, если расширение исключительное -- числовое. Если в расширении присутствуют _буквы_, то он оставляет файл нетронутым.

Не могу понять в чем проблема. Что не так делаю?

anonymous

Re: Скрипт для переименования

find . -exec sh -c 'if [ -e {} ];then echo {} is already exists!;else;mv {} "`echo {} | sed -r 's/(.*)\.([^\.])$/\1_\2.dat/' `";fi ' \;

или

find . -exec rename 's/(.*)\.([^\.])$/$1_$2.dat/' {} \;

gaa ★★ ()

Re: Скрипт для переименования

> if [ "$extention" -ne "${%.dat}" ]

> Отличает отрабатывает в том лишь случае, если расширение исключительное -- числовое.

if [ "$extention" != "${%.dat}" ]

Ибо "-ne" только для чисел.

gaa ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.