0 votes

Utilisation de 'kMDItemContentModificationDate' dans 'do Shell script'.

Je veux trouver les fichiers modifiés à une date spécifique. L'heure à laquelle ils ont été modifiés n'a pas d'importance. J'ai essayé ce qui suit et j'ai obtenu une liste vide (pas d'erreur) :

set theFolder to (choose folder)
set folderPOSIX to quoted form of POSIX path of theFolder
set modList to paragraphs of (do shell script "mdfind -onlyin " & folderPOSIX & " 'kMDItemContentModificationDate = 2015-01-15 00:00:00 -0400'")

Si je comprends bien, je demande les fichiers d'un dossier (répertoire) spécifique qui ont été modifiés le 15 janvier 2015. Si j'ai bien fait (apparemment pas), il devrait trouver au moins un fichier qui a été modifié à cette date, parce que je peux voir dans la fenêtre du dossier que j'ai choisi qu'il y a un fichier modifié le 15 janvier.

Par ailleurs, je ne suis pas sûr de savoir ce qu'est le -0400 est pour. Existe-t-il un moyen d'obtenir les fichiers du 15 janvier, quelle que soit l'heure à laquelle ils ont été modifiés ?

1voto

Zoltán Points 123

J'ai trouvé cette solution avec l'aide du script ci-dessus qui fonctionne parfaitement :

set downloadPath to path to downloads folder from user domain as string
set posixPath to quoted form of POSIX path of downloadPath

--Date to search for:
set dateStart to text returned of (display dialog "Enter search date in form 'MM/DD/YYYY'" default answer "02/03/2015")
--date "Tuesday, February 3, 2015 12:00:00 AM"
set dateStart to date dateStart
--End date (Midnight on next day)
set dateEnd to (dateStart + 24 * 60 * 60 * 1)
--date "Wednesday, February 4, 2015 12:00:00 AM"

--Begin search to now in days (rounded)
set startRound to round ((current date) - dateStart) / 86400
--End search to now in days (rounded)
set endRound to round ((current date) - dateEnd) / 86400
--Search Item
set SearchItem to "."

set theFiles to (do shell script "mdfind -onlyin " & posixPath & " 'kMDItemDisplayName == \"*" & SearchItem & "*\"&& kMDItemContentModificationDate >= $time.today(-" & startRound & ") && kMDItemContentModificationDate <= $time.today(-" & endRound & ")'")

0voto

Vic Points 1820

Le code suivant fait ce que vous voulez. Je l'ai trouvé ici,

http://macscripter.net/viewtopic.php?id=32855

Il se peut que vous souhaitiez ajuster la requête pour filtrer davantage les choses, mais cela a fonctionné correctement lorsque je l'ai testé rapidement...

set parentfolder to path to downloads folder from user domain as string
set ppath to quoted form of POSIX path of parentfolder

# date for search to begin
set Bgn to "1-Dec-14"

# time from begin search to now in days (rounded)
set ABgn to round ((current date) - (date Bgn)) / 86400

# date for search to end
set dNe to "2-dec-14"

# time from end search to now in days (rounded)
set AdNe to round ((current date) - (date dNe)) / 86400

# Search Item
#set SearchItm to "With These Words in it's Name"
set SearchItm to "."

set theFiles to (do shell script "mdfind -onlyin " & ppath & " 'kMDItemDisplayName == \"*" & SearchItm & "*\"&& kMDItemContentModificationDate >= $time.today(-" & ABgn & ") && kMDItemContentModificationDate <= $time.today(-" & AdNe & ")'")

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X