Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

как прoстенький бат-файл преобразовать в скрипт под unix

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
callipso



Зарегистрирован: 27.05.2010
Сообщения: 1
Откуда: Омск

СообщениеДобавлено: Чт Май 27 2010 07:58    Заголовок сообщения: как пр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% ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Пт Май 28 2010 00:18    Заголовок сообщения: Ответить с цитатой

Так выкусывается определенное число символов из строки. Указывается позиция и число символов.

Если надо просто удалять все файлы, не равные текущей дате, то под UNIX делать надо проще.

Получаем эталонное имя:

file_log=`date +%Y%m%d`.log

Удаляем файлы в цикле
for i in `ls /home/user/*.log`; do
if [ $i != $file_log ] then rm -f /home/user/$i
done


Если хотите выкусывать кусок строки, то делать надо вероятно так:

bbb="YYYMMDD.log"
Год=${bbb:0:4}
Месяц=${bbb:4:2}
День=${bbb:6:2}

Идея понятна?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vasstr



Зарегистрирован: 15.07.2008
Сообщения: 50

СообщениеДобавлено: Пт Май 28 2010 00:47    Заголовок сообщения: Ответить с цитатой

find /log -type f -iname "*.log" -mtime +24h -exec rm -f {} \;

надо именно по названию, а не дате модификации?
man find
-regex опция выглядит лучше других
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
vasstr



Зарегистрирован: 15.07.2008
Сообщения: 50

СообщениеДобавлено: Пт Май 28 2010 01:07    Заголовок сообщения: Ответить с цитатой

правильный вариант
Код:
find /somelogdir -type f -name "*.log" ! \( -name "*`date "+%Y%m%d"`.log" \) -exec rm -f {} \;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...