Сценарий оболочки для поиска недавно измененных файлов [duplicate]

Нет, a List<Dog> - не a List<Animal>. Подумайте, что вы можете сделать с List<Animal> - вы можете добавить к нему любое животное ... включая кошку. Теперь, можете ли вы логически добавить кошку в помет щенков? Абсолютно нет.

// Illegal code - because otherwise life would be Bad
List<Dog> dogs = new ArrayList<Dog>(); // ArrayList implements List
List<Animal> animals = dogs; // Awooga awooga
animals.add(new Cat());
Dog dog = dogs.get(0); // This should be safe, right?

Внезапно у вас есть очень спутанный кот.

Теперь вы не можете добавить Cat до List<? extends Animal>, потому что вы не знаете, что это List<Cat>. Вы можете получить значение и знать, что это будет Animal, но вы не можете добавить произвольных животных. Обратное верно для List<? super Animal> - в этом случае вы можете безопасно добавить Animal, но вы ничего не знаете о том, что можно извлечь из него, потому что это может быть List<Object>.

183
задан JackWM 18 April 2013 в 15:38
поделиться

6 ответов

Чтобы найти все файлы, измененные за последние 24 часа (последний полный день) в определенном конкретном каталоге и его подкаталогах:

find /directory_path -mtime -1 -ls

Должно быть по-вашему

- до 1 важен - это означает, что что-то изменилось однажды или менее назад. А + до 1 вместо этого означало бы что-либо изменившееся хотя бы один день назад, но ничего не до того, как 1 означало, что это было изменено в один прекрасный день, не более, не менее.

355
ответ дан ArtOfWarfare 26 August 2018 в 17:27
поделиться

Эта команда работала для меня

find . -mtime -1 -print
5
ответ дан BhandariS 26 August 2018 в 17:27
поделиться

Для других, которые приземляются здесь в будущем (включая меня), добавьте параметр -name для поиска определенных типов файлов, например: find /var -name "*.php" -mtime -1 -ls

4
ответ дан jytou 26 August 2018 в 17:27
поделиться

Другой, более гуманный способ:

find /<directory> -newermt "-24 hours" -ls

или:

find /<directory> -newermt "1 day ago" -ls

или:

find /<directory> -newermt "yesterday" -ls
6
ответ дан Maxim Egorushkin 26 August 2018 в 17:27
поделиться

Вы можете сделать это с помощью

find . -mtime 0

Из man find:

[Время], так как последний файл был изменен, делится на 24 часа и любой остаток отбрасывается. Это означает, что для соответствия -mtime 0, файл должен иметь модификацию в прошлом, которая меньше, чем 24 часа назад.

31
ответ дан Michael 26 August 2018 в 17:27
поделиться

В GNU-совместимых системах (например, Linux):

find . -mtime 0 -printf '%T+\t%s\t%p\n' 2>/dev/null | sort -r | more

Здесь будут перечислены файлы и каталоги, которые были изменены за последние 24 часа (-mtime 0). Он будет перечислять их с последним измененным временем в формате, который является как сортируемым, так и удобным для человека (%T+), за которым следует размер файла (%s), за которым следует полное имя файла (%p), каждый из которых разделен по вкладкам (\t).

2>/dev/null выбрасывает любой вывод stderr, так что сообщения об ошибках не мутируют воды; sort -r сортирует результаты по последним изменениям; и | more перечисляет одну страницу результатов за раз.

6
ответ дан Stephen G Tuggy 26 August 2018 в 17:27
поделиться