Dateisuche mit Terminal

W

wufri11

Mitglied
Thread Starter
Dabei seit
05.01.2015
Beiträge
34
Reaktionspunkte
0
Ich möchte alle Dateien im Ordner Dokumente zurückgeben, die im Monat - 74 erstellt wurden, und deren Name, wie er im Finder angezeigt wird, an irgendeiner Stelle die Zeichen jpg oder jpeg enthält.
und sie in die Datei /Downloads/InhaltNov2015.txt speichern.

Im Terminal gebe ich ein:

mdfind -onylin ~ /Documents "kMDItemFSCreationDate > \$time.this_month(-74) && kMDItemDisplayName == '*jpg*' || == ‚*jpeg*' " > Downloads/FotosNov2015.txt

Ergebnis: Datei wird erzeugt, Inhalt: "Unknown option -onylin und zugehörige Erklärungen"
Was ist im Zusammenhang mit der Option "onylin" falsch?
 
muß -onlyin heißen
 
Danke win2mac!
habe jetzt geschrieben:
mdfind -onlyin ~ /Documents "kMDItemFSCreationDate > \$time.this_month(-74) && kMDItemDisplayName == '*jpg*' || == '*jpeg*' " > Downloads/FotosNov2015.txt

in meiner Textdatei steht jetzt:
Failed to create query for '/Documents kMDItemFSCreationDate > $time.this_month(-74) && kMDItemDisplayName == '*jpg*' || == '*jpeg*' '.
 
Kein Leerzeichen nach der Tilde.
Dackjuments.jpg
 
  • Gefällt mir
Reaktionen: dg2rbf
Danke für den Hinweis fa66!
Leider kommt immer noch eine Fehlermeldung in meiner Ausgabedatei an:
Failed to create query for 'kMDItemContentFSCreationDate > $time.this_month(-74) && kMDItemDisplayName == '*jpg*' || == '*jpeg*' '.
Ich hatte wie folgt korrigiert:
mdfind -onlyin ~/Documents "kMDItemContentFSCreationDate > \$time.this_month(-74) && kMDItemDisplayName == '*jpg*' || == '*jpeg*' " > Downloads/FotosNov2015.txt
 
Ich habe noch einmal probiert:
mdfind -onlyin ~/Documents "kMDItemContentCreationDate > \$time.this_month(-74) && kMDItemDisplayName == '*jpg*' || == '*jpeg*' " > Downloads/FotosNov2015.txt
Es funktioniert noch nicht:
Inhalt Textdatei:
Failed to create query for 'kMDItemContentCreationDate > $time.this_month(-74) && kMDItemDisplayName == '*jpg*' || == '*jpeg*' '.
Kann es daran liegen, das ich als Shell die zsh verwende und ich die Schreibweise aus einem Buch über UNIX habe, dass auf der Basis von bash geschrieben ist?
 
Ich bin kein Terminalexperte, aber könnte es sein, dass die Zieladresse der Datei falsch ist? Müsste die nicht
Code:
> ~/Documents/Downloads/FotosNov2015.txt
lauten?
 
Das macht nicht, die geht trotzdem in den Downloads Ordner
 
Aber vielleicht mal mit der bash probieren, falls du die zsh hast
 
Ich hatte von der bash auf zsh umgestellt- wenn ich jetzt wieder auf die bash umstellen möchte, wird bei den Einstellmöglichkeiten die bash nicht mehr angezeigt. Keine Ahnung wie ich das wieder rückgängig machen kann....

Und habe den Befehl noch einmal etwas korrigiert:

mdfind -onlyn ~/Documents "kMDItemContentCreationDate > \$time.this_month(74) && kMDItemDisplayName == '*jpg*' ∣∣ == '*jpeg*' " >
Downloads/FotosNov2015.txt

und bekomme nun folgende Ausgabe in FotosNov2015.txt:

Unknown option -onlyn

Usage: mdfind [-live] [-count] [-onlyin directory] [-name fileName | -s smartFolderName | query]
list the files matching the query
query can be an expression or a sequence of words

-attr <attr> Fetches the value of the specified attribute
-count Query only reports matching items count
-onlyin <dir> Search only within given directory
-live Query should stay active
-name <name> Search on file name only
-reprint Reprint results on live update
-s <name> Show contents of smart folder <name>
-0 Use NUL (``\0'') as a path separator, for use with xargs -0.

example: mdfind image
example: mdfind -onlyin ~ image
example: mdfind -name stdlib.h
example: mdfind "kMDItemAuthor == '*MyFavoriteAuthor*'"
example: mdfind -live MyFavoriteAuthor

Ich kann nicht erkennen wie ich meinen Befehl ändern müßte.
 
Danke oneOeight! jetzt funkts. Fall gelöst.
 
Kaum macht man's richtig, funktioniert's :)

Aber das ist wohl oft das Problem mit der Terminaltipperei - während man einen Fehler korrigiert, schleicht sich hintenrum dann ein Tippfehler rein. Und dann sucht man an der falschen Stelle.
 
  • Gefällt mir
Reaktionen: dg2rbf
Aber ganz zum Ende bin ich noch nicht gekommen: Eine Frage noch zur Selektion von Dateien mit mdfind: z.B.:

mdfind -onlyin ~/Documents "kMDItemContentCreationDate > \$time.this_month(-3) != kMDItemContentCreationDate > \$time.this_month(-2)" > Downloads/Probe1.txt

Zeigt alle Dateien, die in den vergangenen 3 Monaten erstellt wurden, und nicht die, die vor 3 Monaten erstellt wurden (wie ich es wollte).
(< -4 , > -2) u.ä. funkt. nicht- zeigt alle Dateien an...

Ich finde keine Formulierung die zum richtigen Ergebnis führt.
 
die vor 3 Monaten erstellt wurden
vor im Sinne von
1. »exakt am Tag vor drei Monaten« (was am heutigen 2022-01-29 dann nur Dateien vom 2021-10-29 wären)
2. »drei Monate und älter«
?

(Immer diese Mückensifterei – wie’s sinngemäß im Niederländischen heißt)
 
Ich möchte nur alle finden, die im November 2021 erstellt wurden.
 
Ganz grob mit Stand heute (geht auch eleganter):
(Für den . Punkt kannst Du auch einen Pfad setzen.)

find . -mtime -91 -and -not -mtime -60 -name '*jpg*' -o -mtime -91 -and -not -mtime -60 -name '*jpeg*' > OUTPUT.txt

Vorhandene Fehlermeldungen, z.B. durch Zugriffsverletzungen kannst Du z.B. mit 2> /dev/null ins Nirvana schicken.
 
Zuletzt bearbeitet:
Danke SetPatch!
Ich werde es probieren.
 
Ich habe es so abgewandelt:
find ./Documents -mtime -91 -and -not -mtime -60 -name '*jp*' > Downloads/OUTPUT.txt
Findet alle jpeg und jpg die vor 3 Monaten geändert wurden - o.k. DANKE!
Den Punkt mußte ich aber lassen- sonst funkt. es nicht.
Der Einzige Nachteil scheint aber zu sein, dass find nur die nimmt, die in dem Zeitraum geändert wurden und nicht die, die erstellt wurden...oder?
 
Tausche mal -mtime durch -Btime
Morgen ändert sich dann auch der Anfangswert -91 und Endwert -60 jeweils um einen Zähler, wie auch an den jeweils nachfolgenden Tagen. (Wie gesagt, geht alles auch eleganter)
Für '*jpeg*' und '*jpg*' kannst Du statt '*jp*' auch '*jp?g*' schreiben.
 
Zuletzt bearbeitet:
Zurück
Oben Unten