Ottieni tutti i file modificati più di recente

6

Ho un programma che modifica alcuni file nel file system. Mi piacerebbe sapere esattamente quale è cambiato. Come posso vedere tutti i file sul sistema che sono stati modificati 5 minuti fa da un programma specifico. È possibile?

Funzionerà anche se trovassi tutti i file che sono stati modificati più di recente e che controlli manualmente quale di essi appartenga al programma specifico.

    
posta sanjihan 04.04.2016 - 09:06
fonte

2 risposte

3

Prova ad impostare una ricerca nel Finder in questo modo:

Ciònoncercheràcomunqueifiledisistema.Perquestoticonsigliamodiutilizzare EasyFind . Inoltre non specificherà quale programma ha modificato il file.

    
risposta data 04.04.2016 - 14:17
fonte
2

L'esempio sopra mostra una soluzione che utilizza il Finder. Sotto il cofano sta usando la libreria dei metadati dei file. Questo è accessibile tramite la riga di comando tramite "utilità md * come mdfind , mdls ecc. Se si eseguirà questo comando frequentemente si potrebbe desiderare di averlo a disposizione per incollare facilmente in un terminale invece di puntare e cliccando nel Finder e questo sarebbe un modo rapido per restituirli.

mdfind 'kMDItemContentModificationDate >= $time.now(-300)' ti mostrerà tutti i file che sono stati modificati negli ultimi 5 minuti (300 secondi) sull'intero file system.

Se sai dove il programma gestirà i file, puoi limitare i risultati usando il comando -onlyin , per esempio per trovare i file nella tua cartella Desktop prova: mdfind -onlyin ~/Desktop 'kMDItemContentModificationDate >= $time.now(-300)'

Non parli molto del programma. Puoi utilizzare mdls sul file per ottenere un elenco di tutti gli attributi che potresti essere in grado di eseguire una query:

$ 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                   = ""

Quindi forse potresti filtrare il tipo di attributo MDItemContentType . O se questo è un programma che controlli puoi impostare un attributo esteso in modo esplicito e aggiungerlo ai criteri di ricerca per assicurarti di ottenere solo i file dal tuo programma.

Infine un'altra opzione utile è il flag -live . Rimarrà connesso e ti darà un conteggio del numero di file che soddisfano i criteri.

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

Questo può essere utile quando tutto ciò che devi sapere è che il processo ha toccato il file system. Se la tua query è abbastanza stretta, sai che cambierà solo in base al momento in cui vengono toccati quei file specifici e quindi puoi fare tutto ciò che devi fare in base al fatto che è successo.

    
risposta data 05.04.2016 - 23:30
fonte

Leggi altre domande sui tag