как прoстенький бат-файл преобразовать в скрипт под unix
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 9
- ОС: unix
как прoстенький бат-файл преобразовать в скрипт под unix
есть батник, который удаляет из некой папки файлы с названием, отличным от текущей даты (формат названия файлов YYYYMMDD.log)
for /r "C:\Log\" %%i in (*.log) do if /i not "C:\Log\%date:~6,4%%date:~3,2%%date:~0,2%.log" == "%%i" del "%%i"
вопрос- как конвертируются штуки типа %date:~6,4%%date:~3,2%%date:~0,2% ?
-
- Администратор
- Сообщения: 5403
- ОС: Gentoo
-
- Сообщения: 9
- ОС: unix
Re: как прoстенький бат-файл преобразовать в скрипт под unix
/dev/random писал(а): ↑27.05.2010 09:02
А что они означают? Я правильно понял, что это извлечение фрагмента переменной начиная с указанного символа, указанной длины? Если да, то %date:~6,4% - это ${date:6:4}
%date:~6,4%%date:~3,2%%date:~0,2% -
всё это выражение выводит текущую дату в формате YYYYMMDD , то есть сегодня оно выведет 20100527,
нужен аналог этого в Unix, как получить текущую дату в таком формате?
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: как прoстенький бат-файл преобразовать в скрипт под unix
Код: Выделить всё
date +%Y%m%d
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 9
- ОС: unix
-
- Сообщения: 9
- ОС: unix
Re: как прoстенький бат-файл преобразовать в скрипт под unix
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: как прoстенький бат-файл преобразовать в скрипт под unix
это можно сделать 1 командой find.
что-то вроде
Код: Выделить всё
DATE=`date +%Y%m%d`
find . ! -name "$DATE.log" -delete
(не проверил)
не надо тут for. есть find.
ЕМНИП это соответствует rmdir. тоже не нужно.
-
- Сообщения: 9
- ОС: unix
Re: как прoстенький бат-файл преобразовать в скрипт под unix
drBatty писал(а): ↑27.05.2010 09:57
это можно сделать 1 командой find.
что-то вроде
Код: Выделить всё
DATE=`date +%Y%m%d` find . ! -name "$DATE.log" -delete
(не проверил)
не надо тут for. есть find.
ЕМНИП это соответствует rmdir. тоже не нужно.
путь к папке куда писать?
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: как прoстенький бат-файл преобразовать в скрипт под unix
Вы объясняйте по ходу, что оно всё значит. Знатоков командного языка bat-файлов тут немного.
После find вместо точки.callipso писал(а): ↑27.05.2010 10:01путь к папке куда писать?drBatty писал(а): ↑27.05.2010 09:57это можно сделать 1 командой find.
что-то вроде
Код: Выделить всё
DATE=`date +%Y%m%d` find . ! -name "$DATE.log" -delete
(не проверил)
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Сообщения: 9
- ОС: unix
Re: как прoстенький бат-файл преобразовать в скрипт под unix
t.t писал(а): ↑27.05.2010 10:17Вы объясняйте по ходу, что оно всё значит. Знатоков командного языка bat-файлов тут немного.
После find вместо точки.callipso писал(а): ↑27.05.2010 10:01путь к папке куда писать?drBatty писал(а): ↑27.05.2010 09:57это можно сделать 1 командой find.
что-то вроде
Код: Выделить всё
DATE=`date +%Y%m%d` find . ! -name "$DATE.log" -delete
(не проверил)
вот так пойдёт? полный код (в папке Log каждый день создается файл. Имя файла имеет вид YYYYMMDD.log. Периодически эту папку надо чистить и оставлять в ней только файл соответствующий текущему дню)
echo
find C:\Log\ -name "date +%Y%m%d.log" -delete
sleep
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: как прoстенький бат-файл преобразовать в скрипт под unix
нет, забыли восклицательный знак перед -name. Без него удалятся файлы с текущей датой.
А потом путь у вас больно странный.
и не работать еще не будет, потому что надо так:
Код: Выделить всё
find /path/to/folder ! -name `date +%Y%m%d.log` -delete
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
-
- Сообщения: 9
- ОС: unix
Re: как прoстенький бат-файл преобразовать в скрипт под unix
А потом путь у вас больно странный.
а как же путь прописывается?
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: как прoстенький бат-файл преобразовать в скрипт под unix
я имею в виду, что в юниксах таких путей не бывает. хотя, если у вас cygwin, это многое объясняет (:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 9
- ОС: unix
Re: как прoстенький бат-файл преобразовать в скрипт под unix
и ещё нужно то же самое сделать для папок,
в некой папке C:\Work\ каждый день создаётся папка с именем в формате YYYYMMDD (в папку сохраняются определенные файлы). нужно периодически внешнюю папку чистить и оставлять только папку текущего дня.
ага, я поняла что не бывает, я впервые с Unix...
(к сожалению протестировать не могу, сейчас по виндой, не могли бы вы написать пример какие в Unix пути )
в некой папке C:\Work\ каждый день создаётся папка с именем в формате YYYYMMDD (в папку сохраняются определенные файлы). нужно периодически внешнюю папку чистить и оставлять только папку текущего дня.
ага, я поняла что не бывает, я впервые с Unix...
(к сожалению протестировать не могу, сейчас по виндой, не могли бы вы написать пример какие в Unix пути )
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: как прoстенький бат-файл преобразовать в скрипт под unix
да почти тоже самое.
Код: Выделить всё
find /disk/Work/ ! -name `date +%Y%m%d` -delete
/var/log
/path/to/folder
подробнее
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Сообщения: 276
- ОС: Mandriva Linux Cooker
Re: как прoстенький бат-файл преобразовать в скрипт под unix
а почему не воспользоваться logrotate?
-
- Сообщения: 9
- ОС: unix
Re: как прoстенький бат-файл преобразовать в скрипт под unix
SLEDopit писал(а): ↑27.05.2010 11:16да почти тоже самое.
Код: Выделить всё
find /disk/Work/ ! -name `date +%Y%m%d` -delete
/var/log
/path/to/folder
подробнее
так - так. в ваших двух примерах слэш в конце ставится или нет? в коде, который вы написали было со слешем в конце /disk/Work/
а в примерах- без, - нужен слэш?
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: как прoстенький бат-файл преобразовать в скрипт под unix
по желанию. в данном случае он роли никакой не играет.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: как прoстенький бат-файл преобразовать в скрипт под unix
в данном случае не важно, но принято БЕЗ слеша.
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: как прoстенький бат-файл преобразовать в скрипт под unix
Уж так уж и принято...
Shell
$ cd tmp; ln -s ../doc/ 1
$ cd; find tmp/1
tmp/1
$ find tmp/1/ | wc -l
1038
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: как прoстенький бат-файл преобразовать в скрипт под unix
Shell
$ find tmp/1/
find: tmp/1/: Нет такого файла или каталога
принято-принято...
так тоже принято?
$ mkdir t/////x
а ведь - работает!
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: как прoстенький бат-файл преобразовать в скрипт под unix
Хоть бы написали, что такое tmp/1...
Некорректный пример. (: Вы пишете о том, что не принято, но работает. А я написал о том, что _якобы_ "принято" (с Ваших слов), но в данном случае _не_ работает.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: как прoстенький бат-файл преобразовать в скрипт под unix
Код: Выделить всё
$ mkdir -p test/{1,2,3}
$ touch test/{1,2,3}/{a,b,c,d}
$ find test/1
test/1
<..>
test/1/b
$ find test/1/
test/1/
<..>
test/1/b
$ find test/1/a
test/1/a
$ find test/1/a/
find: `test/1/a/': Not a directory
$ bash --version
bash --version
GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: как прoстенький бат-файл преобразовать в скрипт под unix
когда речь идёт о каталоге, ставить в его конце слэш или не ставить — afaik, дело вкуса.
drBatty говорил о каталоге.
t.t говорит о «мягкой» ссылке.
вы бы как-то пришли бы к консенсусу, что ли.
drBatty говорил о каталоге.
t.t говорит о «мягкой» ссылке.
вы бы как-то пришли бы к консенсусу, что ли.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: как прoстенький бат-файл преобразовать в скрипт под unix
я по вашей инструкции делал :)
э... я писал вот о чём:
если в скрипте написать
DIR="$HOME/"
то далее обычно идёт что-нибудь
program > $DIR/output
что на самом деле
$HOME//output
это пока работает...
в ссылках это тоже пока работает. я не нашёл в манах, что это будет работать всегда...
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: как прoстенький бат-файл преобразовать в скрипт под unix
что именно «это»?
Код: Выделить всё
$ file *
link: symbolic link to `test'
test: directory
$ find link | wc -l
1
$ find link/ | wc -l
16
$ ls link | wc -l
3
$ ls link/ | wc -l
3
$ ls -l link | wc -l
1
$ ls -l link/ | wc -l
4
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: как прoстенький бат-файл преобразовать в скрипт под unix
Код: Выделить всё
$ ln -s t//// lnk
$ ll lnk
lrwxrwxrwx 1 drb users 5 2010-05-27 19:52 lnk -> t/////
$ ll lnk/*
итого 0
работает много слешей вместо одного. но я не думаю, что это нормально.
а find в симлинк не пойдёт - там по умолчания без перехода.
а вот в симлинк со слешем - пойдёт.
-
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: как прoстенький бат-файл преобразовать в скрипт под unix
а чего ж тут ненормального? просто сокращённая запись для ././././.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current