Как подставить дату в имени файла в Linux?

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
alex117
ст. сержант
Сообщения: 323
Зарегистрирован: 2010-07-30 13:25:13

Как подставить дату в имени файла в Linux?

Непрочитанное сообщение alex117 » 2011-10-20 9:51:11

Вроде простая задача, а бьюсь уже долго. Есть скрипт резервного копирования вида:

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

#!/bin/sh
NAME=project
DIRECTORIES="/transfer/ПРОЕКТЫ"
BACKUPDIR="/backup/archive/проекты"
TAR=/bin/tar
PATH=/usr/local/bin:/usr/bin:/bin
NEWER=""
$TAR $NEWER -cf $BACKUPDIR/$NAME-'date +%d-%a-%R'.tar $DIRECTORIES

При выполнении создается архив с именем project-date +%d-%a-%R.tar, т.е подстановка не происходит.
Может где в синтаксисе ошибка?
Система OpenSuse-11.2


Аватара пользователя
alex117
ст. сержант
Сообщения: 323
Зарегистрирован: 2010-07-30 13:25:13

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение alex117 » 2011-10-20 12:02:25

Так как по синтаксису правильно echo ставить?

Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение Neus » 2011-10-20 13:23:57

$TAR $NEWER -cf $BACKUPDIR/$NAME-`date +%d-%a-%R`.tar $DIRECTORIES

Аватара пользователя
alex117
ст. сержант
Сообщения: 323
Зарегистрирован: 2010-07-30 13:25:13

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение alex117 » 2011-10-20 13:43:46

$TAR $NEWER -cf $BACKUPDIR/$NAME-`date +%d-%a-%R`.tar $DIRECTORIES

В итоге имя файла принимает вид PAKKXA~T.TAR.

Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение Neus » 2011-10-20 14:05:58

ну попробуй так

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

DATA=`date +%d-%a-%R`
$TAR $NEWER -cf $BACKUPDIR/$NAME-$DATA.tar $DIRECTORIES

Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение Neus » 2011-10-20 14:15:47

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

#!/bin/sh

DATA=data-`date +%d-%a-%R`
echo $DATA.tar

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

sh test.sh
data-20-Thu-15:15.tar

как бы работает

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение gumeniuc » 2011-10-20 14:20:33

как-то так попробуйте

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

$TAR $NEWER -cf $BACKUPDIR/$NAME-$(date +%d-%a-%R).tar $DIRECTORIES
Да шо ему сделается...

Аватара пользователя
alex117
ст. сержант
Сообщения: 323
Зарегистрирован: 2010-07-30 13:25:13

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение alex117 » 2011-10-20 14:52:59

С обоими способами получается та же фигня, в смысле имени архива.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение hizel » 2011-10-20 14:56:30

УМВР

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

hizel@wnight:~$ sh 1.sh
project-20-Thu-15:54.tar

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

hizel@wnight:~$ cat 1.sh
#!/bin/sh

NAME=project

echo $NAME-`date +%d-%a-%R`.tar



судя по названию файла воняет или виндовз или ее файловыми системами
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
alex117
ст. сержант
Сообщения: 323
Зарегистрирован: 2010-07-30 13:25:13

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение alex117 » 2011-10-20 15:30:15

судя по названию файла воняет или виндовз или ее файловыми системами

Нет, файловый сервер на OpenSuse с ext3-разделом.

Аватара пользователя
gumeniuc
ст. сержант
Сообщения: 343
Зарегистрирован: 2009-11-08 15:46:05
Откуда: md
Контактная информация:

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение gumeniuc » 2011-10-20 16:09:40

так работает. а у вас что в итоге получается ?

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

cat 1.sh
#!/bin/sh

touch $(date +%d-%a-%R).txt
Да шо ему сделается...

Аватара пользователя
alex117
ст. сержант
Сообщения: 323
Зарегистрирован: 2010-07-30 13:25:13

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение alex117 » 2011-10-20 18:17:56

Да получается что-то вида

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

PAKKXA~T.TAR.

С различными вариациями букв и символов.
Просто в консоли

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

date +%d-%a-%R

Все срабатывает нормально.

FiL
ст. лейтенант
Сообщения: 1328
Зарегистрирован: 2010-02-05 0:21:40

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение FiL » 2011-10-20 19:08:08

alex117 писал(а):
судя по названию файла воняет или виндовз или ее файловыми системами

Нет, файловый сервер на OpenSuse с ext3-разделом.
И бакап тоже лежит на ext3?

Но вообще скажите, пожалуйста что у Вас конкретно вот этот скрипт выдает -

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

hizel@wnight:~$ cat 1.sh
#!/bin/sh

NAME=project

echo $NAME-`date +%d-%a-%R`.tar

Аватара пользователя
alex117
ст. сержант
Сообщения: 323
Зарегистрирован: 2010-07-30 13:25:13

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение alex117 » 2011-10-21 7:46:04

И бакап тоже лежит на ext3?

да.

Аватара пользователя
alex117
ст. сержант
Сообщения: 323
Зарегистрирован: 2010-07-30 13:25:13

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение alex117 » 2011-10-21 14:40:47

Но вообще скажите, пожалуйста что у Вас конкретно вот этот скрипт выдает -

Код: Выделить всё
hizel@wnight:~$ cat 1.sh
#!/bin/sh

NAME=project

echo $NAME-`date +%d-%a-%R`.tar

Так все нормально

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

project-21-Птн-15:38.tar

Но это с "echo", а вот с "tar" ничего не выходит
P.S: Мне в принципе уже это не надо, но просто на будущее интересно, где косяк.

Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение Neus » 2011-10-21 15:06:56

а если использовать цифры
$NAME-`date "+%Y%m%d_%H%M"`.tar

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

Re: Как подставить дату в имени файла в Linux?

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

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

#!/bin/sh
DT=`date +"%d-%m-%Y"`
touch /home/bagas/$DT.txt

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

# la -l /home/bagas/ | grep txt
-rw-r--r--  1 root   wheel      0 21 окт 16:11 21-10-2011.txt


Из за чего весь сэр-бор?
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение Neus » 2011-10-21 15:22:51

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

~> tar -xf project-`date +%d-%a-%Y`
tar: project-21-Fri-2011: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
~> tar -xf project-`date +%F`
tar: project-2011-10-21: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now

у меня и с tar-ом все нормально, что на фре что на сусе...

Аватара пользователя
alex117
ст. сержант
Сообщения: 323
Зарегистрирован: 2010-07-30 13:25:13

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение alex117 » 2011-10-22 8:46:00

tar -xf project-`date +%d-%a-%Y`
tar: project-21-Fri-2011: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
~> tar -xf project-`date +%F`
tar: project-2011-10-21: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now


у меня и с tar-ом все нормально, что на фре что на сусе

!/bin/sh
DT=`date +"%d-%m-%Y"`
touch /home/bagas/$DT.txt


Код: Выделить всё
# la -l /home/bagas/ | grep txt
-rw-r--r-- 1 root wheel 0 21 окт 16:11 21-10-2011.txt



Из за чего весь сэр-бор?


Так вы в скрипт заверните это дело, а потом выполните.
А так в консоли и у меня нормально срабатывает.

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

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение bagas » 2011-10-22 11:09:09

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

#!/bin/sh
DT=`date +"%d-%m-%Y"`
touch /home/bagas/$DT.txt

Это и есть мини скрипт.
Что бы ты не делал , жизнь слишком коротка!
Блог о BSD системах.

Аватара пользователя
alex117
ст. сержант
Сообщения: 323
Зарегистрирован: 2010-07-30 13:25:13

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение alex117 » 2011-10-22 18:25:23

ну а если вместо touch tar поставить? Просто ради интереса, как у вас отработает?

Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение Neus » 2011-10-23 11:55:08

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

#!/bin/sh

DATA1=data-`date +%d-%a-%R`
DATA2=data-`date +%F_%H-%M`
tar -xf $DATA1.tar
tar -xf $DATA2.tar

~> sh test.sh
data-23-Sun-12: Unknown host
tar: data-23-Sun-12\:52.tar: Cannot open: Input/output error
tar: Error is not recoverable: exiting now
tar: data-2011-10-23_12-52.tar: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now

хы, действительно странно подставляет символ ":"
но вариант2 то работает!

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

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение bagas » 2011-10-23 17:17:59

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

Аватара пользователя
alex117
ст. сержант
Сообщения: 323
Зарегистрирован: 2010-07-30 13:25:13

Re: Как подставить дату в имени файла в Linux?

Непрочитанное сообщение alex117 » 2011-10-24 8:27:43

Стандартно bash в OpenSuse, я ничего не менял.


Вернуться в «SHELL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость