“найдите, что-mtime” не работает как ожидалось над файлами с различными часовыми поясами?

Один простой способ сделать его на Linux был бы к:

  1. Использовать find или ls перечислять все файлы в каждом каталоге и передавать результаты по каналу в различные файлы журнала. Используя ls было бы лучше для Вашей цели, поскольку она может отобразить различную информацию, включая полномочия, даты и размеры.
  2. Сравните файлы журнала с помощью чего-то как diff определить любые различия.

Надежда это может помочь Вам начать.

7
задан 1 December 2010 в 15:19
4 ответа

Возможно, что проблемой timzeone является отвлекающий маневр.

find . -mtime 7 

должен найти файлы, которые точно семь дней ("семь" значение между 7 000 и 7,999 днями, плюс-минус, и "старое" значение "начиная с последнего изменения"). Если Вы хотите файлы, которые больше чем семь дней, которые, судя датой на Вашем первом файле (июнь 2010) Вы делаете, попробовать

find . -mtime +7

Я соглашаюсь с Вами об очевидном часовом поясе, являющемся нечетным, но я думаю, что это объяснимо. man stat ясно, что time_t хранится, как Sean R говорит ниже. Что ls делает отображает это как местное время, и это достаточно любезно для принятия во внимание локальные конвенции перехода на летнее время, когда это делает так.

Моя система является тем же: времена файла, которые, оказывается, падают в марте-октябре, показывают с +0100 часовыми поясами, в то время как тех, которые падают в октябре-марте, показывают с +0000 часовыми поясами, не потому что это хранится в файловой системе, но потому что файл часового пояса говорит моей системе, что в июне, когда я коснулся файла, я сделаю его за один раз, что я думал, было 8:00, не it-would-be-7am-if-it-were-winter. ls достаточно любезно, при отображении времен, которые, оказывается, находятся летом, показывают им, поскольку они появились бы летом, это - все.

Если можно найти какие-либо часовые пояса в выводе ls, которые не являются или летом или зимой согласно местному обычаю, то я неправ - но я не могу найти никого в своей системе.

15
ответ дан 2 December 2019 в 23:16

С находкой-mtime работает в 24-часовые периоды так

-mtime 0 or -mtime -1 mean today
-mtime 3 would mean 3 days old
-mtime +1 means greater than one day old 
-mtime -7 means less than 7 days old
3
ответ дан 2 December 2019 в 23:16

Объяснить часть часового пояса его немного больше ("mtime" обсуждение обрабатывается другими комментариями)...

Дата и времена хранится на файлах как секунды с полуночи 1 января 1970, UTC. Значение там не является никаким часовым поясом, связанным с ними. Программы затем используют системную установку часового пояса в/etc/timezone, если не переопределено переменной среды "TZ", для отображения того времени в локальном часовом поясе:

chats:/tmp$ touch foo
chats:/tmp$ ls -l foo
-rw-r--r-- 1 jafo jafo 0 Dec  1 06:14 foo
chats:/tmp$ TZ=GMT ls -l foo          
-rw-r--r-- 1 jafo jafo 0 Dec  1 13:14 foo
chats:/tmp$ 

Отметьте в последней строке, которую это показывает 13:14, и в выводе выше его, где я использую свой часовой пояс по умолчанию американского Горного времени (GMT-0700), это показывает 6:14. Различием является второй "ls", я установил переменную среды TZ на GMT.

Можно хотеть использовать "статистику" для исследования всего времени/дат, связанного с файлами также.

2
ответ дан 2 December 2019 в 23:16

В дополнение к вышеупомянутому я часто использую следующее:

find -mtime -7 -daystart 

Это говорит, находят для нахождения файлов, которые составили (7 * 24) часы, старые с начала сегодня.

1
ответ дан 2 December 2019 в 23:16

Теги

Похожие вопросы