Wie finde ich eine Datei nach Dateinamen im Mac OSX-Terminal?

Ich möchte eine Datei auf meinem Macbook mit dem Dateinamen finden: abc.dmg. Ich habe versucht, Spotlight zu verwenden, aber es findet es nicht. Als ich find ausprobierte und verwendete: find -name abc.dmg -path /, bekam ich Fehler zurück.

Was ist die richtige Syntax, um eine Datei nach Dateinamen mit dem Befehl find auf einem Mac OSX-Terminal zu finden?

Author: HopelessN00b, 2010-12-28

8 answers

In seiner einfachsten Form nimmt find einen Parameter an: den Pfad. In seiner eigentlich nützlichen Form nimmt es den Weg, gefolgt von einengenden Kriterien.

Also willst du:

  • find (das Programm)
  • / (der Pfad), und
  • -name abc.dmg (die Kriterien).
find / -name abc.dmg
 227
Author: VxJasonxV,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-07-23 03:56:58

find . -name '*.csv' zum Beispiel arbeitete für mich mit Platzhaltern. OP könnte auch find . -name '*.dmg', um sein aktuelles Verzeichnis zu überprüfen, vorausgesetzt, er war in /.

 34
Author: pjammer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-10-27 14:11:10
 12
Author: Rich Homolka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-12-28 19:21:39

Sie können den Befehl locate verwenden.

locate abc.dmg
 8
Author: Wuffers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-12-28 17:44:14

Der einfachste Weg (den du sicher schon ausprobiert hast, aber hey, lass es mich trotzdem zum Thread hinzufügen) ist die Eingabe von abc.dmg in das Suchfeld oben rechts in einem Finder-Fenster und wählen Sie dann "Dateiname" aus den Optionen in der angezeigten Suchleiste.

Keine Notwendigkeit für das Terminal.

Denken Sie auch daran, dass Spotlight nur Verzeichnisse indiziert, die in der Spotlight-Systemsteuerung und abc angegeben sind.dmg befindet sich möglicherweise nicht in einem dieser Verzeichnisse.

Korrigiere mich, wenn ich falsch liege, aber ich denken Sie, der Befehl find muss wissen, was ausgegeben werden soll:

find / -name abc.dmg -print

...sollte alle Ergebnisse an das Terminal drucken (einschließlich Berechtigungsfehler).

Wenn Sie keine Berechtigungsfehler möchten und andere Benutzerverzeichnisse durchsuchen möchten, dann:

sudo find / -name abc.dmg -print
 5
Author: Jupiter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-12-28 23:09:35

Sie können folgende Befehlszeilenfunktionen verwenden, um relevante Dateien schnell zu finden und zu öffnen. Ich finde das einfacher als lange Abfragezeichenfolge in Spotlight-Fenster eingeben.

Fügen Sie folgende Funktionen in ~/.bash_aliases hinzu.

# find any item matching search query in file name
spot(){
  mdfind "kMDItemDisplayName=='*$1*'cd";
}

# restrict to files under (recursive) a specific path 
findpaper(){
    mdfind -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd";
}

# default to open the first entry unless 2nd positional argument is given
openpaper(){
    FILEID=$(printf "%sp" ${2:-1})

    open "$(mdfind -name -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd" | sed -n "${FILEID}")"

}

Nun, entweder source ~/.bash_aliases oder öffnen Sie eine neue Terminal-Load-Funktionen. Um nach Dateien mit Wörtern, Buchstaben und Zeichen überall im Dateinamen zu suchen, tun Sie

spot pie*2016 #or
spot 2016*pie

Es ist nicht erforderlich, * Ihrer Abfrage als Suchmuster voranzustellen oder anzuhängen, '*$1*' bereits tags Wildcard-Eintrag am Anfang und am Ende Ihrer Abfrage. Zusätzliche cd ist für Groß-und Kleinschreibung und ignoriert diakritische Zeichen, zB fred wird sowohl Frédéric als auch FrEDeric zurückgeben.

findpaper beschränkt die Suche auf Ergebnisse unter einem bestimmten Pfad (rekursiv), während openpaper pie*201 ein (oder das erste von mehreren Ergebnissen) Suchergebnis öffnet oder openpaper pie*201 3 den dritten Ergebniseintrag öffnet. Um das Öffnen von Bash-Skripten oder anderen Nicht-Dokumentdateien zu vermeiden, können Sie den Dateiinhalt durch zusätzliche Suche einschränken Attribut. Siehe Dateimetadatenabfrageausdruckssyntax und https://ss64.com/osx/mdfind.html für die Verwendung anderer Suchoperatoren.

 2
Author: Samir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-02-09 04:28:07

Erfassen einer Liste aller Dateien auf Ihrer Festplatte als root von /

sudo find / &> ~/file-list.txt
sudo chown $(whoami) ~/file-list.txt

Durchsuchen Sie die gesamte Datei über grep, um das gesamte Laufwerk zu durchsuchen:

cat ~/file-list.txt | grep abc.dmg

Nur mit regulären Ausdrücken anzeigen .jpg und .dmg-Dateien:

cat ~/file-list.txt | grep -E "(\.dmg|\.jpg)"

Ergebnis:

Applications/Visualisations/CurvedSpaces-forMac.app/Contents/Resources/Textures/paper.jpg

...etc. Leider werden auch alle gemounteten Festplatten erfasst, also am besten, um diese Time Machine auszuwerfen, da sie viele Links haben. In einem anderen Fenster starte ich watch tail -n 10 ~/file-list.txt, das mir zeigt, wo es in meinem heimtückischen Hack liegt!

 1
Author: Tomachi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-07-22 12:01:37

Verwenden Sie in Ihrem Terminal

man find

Um das vollständige Handbuch des Befehls find für Ihre spezifische Version Ihres Betriebssystems zu erhalten.

 0
Author: Stef Joosten,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2021-01-18 08:03:41