Получить все файлы, которые были изменены в последнее время

5

У меня есть программа, которая изменяет несколько файлов в файловой системе. Я хотел бы знать, какой именно он изменился. Как я могу увидеть все файлы в системе, которые были изменены 5 минут назад определенной программой. Это возможно?

Это также будет работать, если я смог найти все файлы, которые были изменены в последнее время, и затем вручную проверить, какой из них принадлежит конкретной программе.

sanjihan
источник
Если вы знаете каталог или подкаталог, вы можете попробовать ls -la * | grep XX:XXзаменить XX: XX на измененное время. Это, однако, имеет 2 недостатка: во-первых, вам нужно знать каталог или подкаталог, и команда не отображает, в каком подкаталоге находится измененный файл
TheBro21

Ответы:

2

Попробуйте настроить поиск в Finder следующим образом: введите описание изображения здесь

Это не будет искать системные файлы как бы то ни было. Для этого вы захотите использовать EasyFind . Также не будет указано, какая программа изменила файл.

Йота
источник
1
Вы можете включить системные файлы так же, как указали тип файла.
2

В приведенном выше примере показано решение с использованием Finder. Под капотом используется файловая библиотека метаданных. Это доступно через командную строку через утилиты md *, например mdfind, mdlsи т. Д. Если вы собираетесь часто запускать эту команду, вам может потребоваться, чтобы она была легко вставлена ​​в терминал вместо того, чтобы указывать и нажимать в Finder, и это был бы быстрый способ вернуть их.

mdfind 'kMDItemContentModificationDate >= $time.now(-300)' покажет вам все файлы, которые были изменены за последние 5 минут (300 секунд) во всей файловой системе.

Если вы знаете, где программа будет обрабатывать файлы, вы можете ограничить результаты, используя -onlyinкоманду, например, чтобы найти файлы в папке Desktop, попробуйте: mdfind -onlyin ~/Desktop 'kMDItemContentModificationDate >= $time.now(-300)'

Вы не упоминаете много о программе. Вы можете использовать mdlsфайл, чтобы получить список всех атрибутов, которые вы можете запросить:

$ mdls SampleDoc.pages
_kMDItemOwnerUserID            = 501
kMDItemAuthors                 = (
    ""
)
kMDItemComment                 = ""
kMDItemContentCreationDate     = 2011-11-17 02:01:06 +0000
kMDItemContentModificationDate = 2011-11-17 02:01:06 +0000
kMDItemContentType             = "com.apple.iwork.pages.sffpages"
kMDItemContentTypeTree         = (
    "com.apple.iwork.pages.sffpages",
    "public.zip-archive",
    "com.pkware.zip-archive",
    "public.data",
    "public.item",
    "public.archive",
    "public.composite-content",
    "public.content"
)
kMDItemDateAdded               = 2015-11-23 05:13:23 +0000
kMDItemDisplayName             = "SampleDoc.pages"
kMDItemFonts                   = (
    "Helvetica-Bold",
    "Helvetica-Oblique",
    LucidaGrande
)
kMDItemFSContentChangeDate     = 2011-11-17 02:01:06 +0000
kMDItemFSCreationDate          = 2011-11-17 02:01:06 +0000
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 64
kMDItemFSHasCustomIcon         = (null)
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = (null)
kMDItemFSLabel                 = 0
kMDItemFSName                  = "SampleDoc.pages"
kMDItemFSNodeCount             = (null)
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 501
kMDItemFSSize                  = 823736
kMDItemFSTypeCode              = ""
kMDItemKeywords                = (
    ""
)
kMDItemKind                    = "Pages Publication"
kMDItemLogicalSize             = 823736
kMDItemPhysicalSize            = 827392
kMDItemTitle                   = ""

Так что, возможно, вы могли бы фильтровать по MDItemContentTypeтипу атрибута. Или, если это программа, которой вы управляете, вы можете явно установить расширенный атрибут и добавить его в критерии поиска, чтобы убедиться, что вы получаете только файлы из своей программы.

Наконец, еще одна полезная опция - -liveфлаг. Он будет оставаться на связи и подсчитает количество файлов, соответствующих критериям.

$ mdfind -onlyin ~/Desktop -live 'kMDItemContentModificationDate >= $time.now'
[Type ctrl-C to exit]
Query update: 1 matches
Query update: 2 matches

Это может быть полезно, когда все, что вам нужно знать, это то, что процесс коснулся файловой системы. Если ваш запрос достаточно жесткий, вы знаете, что он будет меняться только в зависимости от того, когда эти конкретные файлы были затронуты, и тогда вы сможете делать все, что вам нужно, в зависимости от того, что это произошло.

cclark
источник