В приведенном выше примере показано решение с использованием 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
Это может быть полезно, когда все, что вам нужно знать, это то, что процесс коснулся файловой системы. Если ваш запрос достаточно жесткий, вы знаете, что он будет меняться только в зависимости от того, когда эти конкретные файлы были затронуты, и тогда вы сможете делать все, что вам нужно, в зависимости от того, что это произошло.
ls -la * | grep XX:XX
заменить XX: XX на измененное время. Это, однако, имеет 2 недостатка: во-первых, вам нужно знать каталог или подкаталог, и команда не отображает, в каком подкаталоге находится измененный файл