Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 {} \; |
|
|
Вернуться к началу |
|
|
|