скрипт переименования

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

скрипт переименования

Непрочитанное сообщение bagas » 2011-04-20 21:52:12

Добрый ночи.
Вот сейчас наклепал скипт...но не пойму почему он не работает должным образом.
Скрипт изначально должен проверить существуетли файлы в директории и если да, то переименовать их сегоднешней датой.
Но почемуто имя не меняетсья.
Основая функция скрипта это раскидывая файла по директориям.
Первая часть скрипта проверяет директорию за заполненость файлом...а вторая копирует фаел.
Другие варианты не предлогать, я хочу разобрадться почему в данном случае не работает функция переименования.

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

#!/bin/bash
### BEGIN INIT INFO
DIR="/home/bagas/Видео/"
SOR="/home/bagas/doc/АКТ п Фарммед.doc"
TITLE='Копирование завершенно'
DATE=`date +"%Y-%m-%d"`
FINDS="find /home/bagas/Видео -type f -name *.doc"
#number=0
### END INIT INFO

# Поехали!
for f in $FINDS;
do
if [ -f "$f" ]
then
     name=`"$f" | cut -f7 -d /`
     newname=`echo $name | sed -e "s/$1/$2/"`
     mv "$name" "$newname"
     #let "number += 1"
fi
done
for i in $( ls $DIR | grep [0-9] );
do
     src=$i
     mkdir -p "$DIR$src/S"
     cp "$SOR" "$DIR$src/S"
done
     sh /root/sm $TITLE
exit 1
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35437
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: скрипт переименования

Непрочитанное сообщение Alex Keda » 2011-04-20 21:54:14

это всё кривой баш
Убей их всех! Бог потом рассортирует...

Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

Re: скрипт переименования

Непрочитанное сообщение bagas » 2011-04-20 22:03:42

я этот скрипт уже попробывал дома..на linux'e.
Тоже самое, не переименовывает.чисто копирует.
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35437
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: скрипт переименования

Непрочитанное сообщение Alex Keda » 2011-04-20 22:07:57

а вы думали наложение кривизны линукса на кривизну баша - выпрямит скрипт? =)
врятли =)
=====
по сабжу - напиште на шелле - тогда подскажу чёнить, а на баше - дальше шабанга никогда не смотрю.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Max Sabadash
рядовой
Сообщения: 20
Зарегистрирован: 2011-04-21 6:55:51
Откуда: Алма-Ата, Казахстан

Re: скрипт переименования

Непрочитанное сообщение Max Sabadash » 2011-04-21 7:16:07

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

name=`"$f" | cut -f7 -d /`
В твоем случае нужно -f5

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

sed -e "s/$1/$2/"
откуда, берутся переменные $1, $2

Даже у "кривого" ;-) bash'а есть ключи -vx

Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

Re: скрипт переименования

Непрочитанное сообщение bagas » 2011-04-21 11:48:11

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

#!/bin/bash
### BEGIN INIT INFO
DIR="/home/bagas/"
SOR="/mnt/share/tmp/док/FreeBSD команды.doc"
TITLE='Копирование завершенно'
DATE=`date +"%Y-%m-%d"`
FINDS="find /home/bagas/ -type f -name *.doc"
#number=0
### END INIT INFO

# Поехали!
IFS=$'\n'
for f in find /home/bagas/ -type f -name *.doc;
do
unset IFS
if [ -f $f ]
then
     name=`$f | cut -f6 -d /`
     newname=`echo $name | cut -f2 -d .`
     cp $name $DATE.$newname
     #let "number += 1"
fi
done
for i in $( ls $DIR | grep [0-9] );
do
     src=$i
     mkdir -p "$DIR$src/S"
     cp "$SOR" "$DIR$src/S"
done
     sh /root/sm $TITLE
exit 1
Обновил скрипт. переменные $1 $2 это хперементы савил...тоже подправил...
Определил переменную...потомучто файлы с пробелами.
IFS=$'\n' перемешаю строку в низ
но все равно переименовываться не хочет.
но толку нету скрипт проглатываеться...но файл не переименовывается.
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: скрипт переименования

Непрочитанное сообщение rmn » 2011-04-21 11:58:27

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

     mv "$DIR$name" "$DIR$newname"
?

Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

Re: скрипт переименования

Непрочитанное сообщение bagas » 2011-04-21 13:22:24

mv $name $DATE.$newname
ошибся чудок.
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: скрипт переименования

Непрочитанное сообщение rmn » 2011-04-21 13:32:16

ну тогда:

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

mv "$DIR$name" "$DIR$DATE.$newname"

Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

Re: скрипт переименования

Непрочитанное сообщение bagas » 2011-04-21 13:44:57

сделал не помогает...

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

FINDS="`find /home/bagas/ -type f -name '*.doc'`"
IFS=$'\n'
for f in $FINDS;
do
unset IFS
if [ -f "$f" ]
then
     name=`echo "$f" | cut -f6 -d /`
     newname=`echo "$name" | cut -f2 -d .`
     mv "$DIR$name" "$DIR$DATE.$newname"
     #let "number += 1"
fi
done
for i in $( ls $DIR | grep [0-9] );
do
     src=$i
     mkdir -p "$DIR$src/S"
     cp "$SOR" "$DIR$src/S"
done
    sh /root/sm $TITLE
exit 1
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: скрипт переименования

Непрочитанное сообщение rmn » 2011-04-21 13:49:44

добавь

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

name=`echo "$f" | cut -f6 -d /`
newname=`echo "$name" | cut -f2 -d .`
echo "$name - $newname"
и покажи, что скрипт пишет в консоль

Аватара пользователя
Max Sabadash
рядовой
Сообщения: 20
Зарегистрирован: 2011-04-21 6:55:51
Откуда: Алма-Ата, Казахстан

Re: скрипт переименования

Непрочитанное сообщение Max Sabadash » 2011-04-21 14:43:46

откуда берется $SOR ?

Как и писал выше, попробуй для отладки воспользоваться ключами -vx

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

#!/bin/bash -vx
И вообще, слишком сложно придумываешь. Попробуй посмотреть в эту сторону:

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

#!/bin/bash

mydate=`date +%Y`
dir="/home/maxim"

for file in `find ${dir} -type f -name '*.txt'`
do
  newname="${mydate}-`basename ${file}`"
  mv $file ${dir}/${newname}
done

Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

Re: скрипт переименования

Непрочитанное сообщение bagas » 2011-04-21 15:54:35

rmn писал(а):добавь

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

name=`echo "$f" | cut -f6 -d /`
newname=`echo "$name" | cut -f2 -d .`
echo "$name - $newname"
и покажи, что скрипт пишет в консоль

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

     name=`echo "$f" | cut -f6 -d /`
     newname=`echo "$name" | cut -f1 -d .`
     echo "$name - $newname"
Добавил, вывода нету...значит что то с циклом...
Max Sabadash писал(а):откуда берется $SOR ?

Как и писал выше, попробуй для отладки воспользоваться ключами -vx

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

#!/bin/bash -vx
И вообще, слишком сложно придумываешь. Попробуй посмотреть в эту сторону:

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

#!/bin/bash

mydate=`date +%Y`
dir="/home/maxim"

for file in `find ${dir} -type f -name '*.txt'`
do
  newname="${mydate}-`basename ${file}`"
  mv $file ${dir}/${newname}
done

Вроде переменная $SOR определенна, и она работает..
SOR="/mnt/share/tmp/док/FreeBSD команды.doc"
Не работает только переименования файлов.

#!/bin/bash -vx
отладку добавил, но толку нету.
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

Аватара пользователя
Max Sabadash
рядовой
Сообщения: 20
Зарегистрирован: 2011-04-21 6:55:51
Откуда: Алма-Ата, Казахстан

Re: скрипт переименования

Непрочитанное сообщение Max Sabadash » 2011-04-21 16:10:04

Ну так выложи вывод!!!

Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

Re: скрипт переименования

Непрочитанное сообщение bagas » 2011-04-21 16:21:36

он на дисплей ничего не выводит.
Если в файл отладочную информацию выводит, то скажите в какой?
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

Аватара пользователя
Max Sabadash
рядовой
Сообщения: 20
Зарегистрирован: 2011-04-21 6:55:51
Откуда: Алма-Ата, Казахстан

Re: скрипт переименования

Непрочитанное сообщение Max Sabadash » 2011-04-21 17:08:27

А можно полюбопытствовать как ты его запускаешь?

Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

Re: скрипт переименования

Непрочитанное сообщение bagas » 2011-04-21 17:32:13

хмм...
я честно говоря непонял как его запустить...
как ты посоветовал , укозал #!/bin/bash -xv в скрипте, знаю, что это ничего не даст, но все равно указал такой параметр...На аволь, просто уже голова кругом идет, перчитал кучу информации, должно же работать.
и щапускаю скрипт с sh dirrr
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

Аватара пользователя
Max Sabadash
рядовой
Сообщения: 20
Зарегистрирован: 2011-04-21 6:55:51
Откуда: Алма-Ата, Казахстан

Re: скрипт переименования

Непрочитанное сообщение Max Sabadash » 2011-04-21 17:51:52

Попробуй без sh

Аватара пользователя
Max Sabadash
рядовой
Сообщения: 20
Зарегистрирован: 2011-04-21 6:55:51
Откуда: Алма-Ата, Казахстан

Re: скрипт переименования

Непрочитанное сообщение Max Sabadash » 2011-04-21 18:23:15

И bash в BSD лежит в /usr/local/bin
Считается вражеским.

Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

Re: скрипт переименования

Непрочитанное сообщение bagas » 2011-04-21 18:29:06

я бинарник скопировал из /usr/local/bin в /bin/
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

Аватара пользователя
bagas
лейтенант
Сообщения: 922
Зарегистрирован: 2010-08-18 19:49:01
Откуда: Воронеж
Контактная информация:

Re: скрипт переименования

Непрочитанное сообщение bagas » 2011-04-21 21:56:20

Всем спасибо, за содействие.разобрался.

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

#!/bin/bash -vx
### BEGIN INIT INFO
DIR="/home/bagas/Видео/"
SOR="/home/bagas/doc/АКТ п Фарммед.doc"
TITLE='Копирование завершенно'
DATE=`date +"%Y-%m-%d"`
FINDS="`find /home/bagas/Видео -type f -name '*.doc'`"
NUM_MV=0
NUM_CP=0
### END INIT INFO

# Поехали !
IFS=$'\n'
    for f in $FINDS;
do
unset IFS
             n=`echo "$f" | cut -f1 -d .`
             n1=`dirname "$f"`
             mv -n "$f" "$n1/$DATE.doc"
             let "NUM_MV += 1"
done
    for i in $( ls $DIR | grep [0-9] );
do
             src=$i
             mkdir -p "$DIR$src/S"
             cp "$SOR" "$DIR$src/S"
             let "NUM_CP += 1"
done
             sh /root/sm "$TITLE".Общее количество файлов переименовано >>"$NUM_MV"<<, общее количество файлов с копировано >>"$NUM_CP"<<.
exit 1
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.