Здесь другое решение с командой «rename»:
find -name 'access.log.*.gz' | sort -Vr | rename 's/(\d+)/$1+1/ge'
(Почти то же как этот вопрос .)
От документация :
Использованию NSCalendarDate сильно препятствуют. Это еще не удерживается от использования, однако это может быть в следующей главной версии ОС после Mac OS X v10.5. Для calendrical вычислений необходимо использовать подходящие комбинации NSCalendar, NSDate и NSDateComponents, как описано в Календарях в Даты и время, Программируя Темы для Какао .
Следование, что совет:
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
components.month = 1;
NSDate *nextMonth = [gregorian dateByAddingComponents:components toDate:today options:0];
[components release];
NSDateComponents *nextMonthComponents = [gregorian components:NSYearCalendarUnit | NSMonthCalendarUnit fromDate:nextMonth];
NSDateComponents *todayDayComponents = [gregorian components:NSDayCalendarUnit fromDate:today];
nextMonthComponents.day = todayDayComponents.day;
NSDate *nextMonthDay = [gregorian dateFromComponents:nextMonthComponents];
[gregorian release];
может быть более прямое или эффективное внедрение, но это должно быть точно и должно указать в правильном направлении.
Я буду, вероятно, использовать NSCalendarDate.
Получают dayOfMonth текущей даты, monthOfYear и yearOfCommonEra, как три числа.
Добавляют необходимое число месяцев (1/3/6/9), заботясь о 1), существует ли та дата (например, 31 апреля, 29 февраля на невисокосном годе), и 2) трансформация года.
Создают ту новую дату с initWithYear:month:day:hour:minute:second:timeZone NSCalendarDate:
NSCalendarDate больше не поддерживается новым SDK, будет иметь проблему при создании для распределения.
Используйте NSCalender, NSDateComponents и NSDate:
NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];
components.month = 1;
NSDate *oneMonthFromNow = [[NSCalendar currentCalendar] dateByAddingComponents:components toDate:[NSDate date] options:0];
Просто установите различные свойства компонентов
, чтобы получить разные периоды времени (например, 3 месяцев, 6 месяцев и т. д.).
Примечание. В зависимости от контекста вы можете использовать [[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar] autorelease]
вместо [NSCalendar currentCalendar]
, если на "1 month "вы имеете в виду" 1 месяц по григорианскому календарю ".