Ich muss ein Bild finden, z. B. ABC.jpg, von dem ich weiß, dass es programmgesteuert in einem Verzeichnis mit dem Namen ABC_MPSC abgelegt wurde. Ich habe es versucht:
cd /
find . -name "ABC_MPSC/ABC.jpg"
Aber das gibt nichts zurück (ich weiß tatsächlich, wo genau ich suche, also weiß ich, dass es existiert). Gibt es einen Suchbefehl, mit dem ich möglicherweise nicht manuell suchen muss?
locate
, was deutlich schneller sein sollte, aber nur funktioniert, wenn die Datei bereits vorhanden war, als sieupdatedb
das letzte Mal ausgeführt wurde.Antworten:
Es gibt ein
-path
Prädikat, das hier nützlich ist:Die POSIX- Beschreibung für dieses Prädikat lautet:
Der Grund, warum Ihr Fehler
-name "ABC_MPSC/ABC.jpg"
aufgetreten ist, ist das-name
Prädikat:Mit anderen Worten, es wird
-name
nie das Verzeichnis des aktuellen Dateinamens angezeigt, sondern nur der Basisdateiname selbst (z. B. ABC.jpg).quelle
Zwei Möglichkeiten (abgesehen von der Verwendung
-path
):Suchen Sie nach dem Verzeichnis und suchen Sie die Datei:
Dies hängt von der
find
Implementierung ab, um{}
auf den aktuellen Pfadnamen des gefundenen Verzeichnisses zu expandieren , auch wenn es mit verknüpft ist/ABC.jpg
(dies ist nicht erforderlich ). Es könnte auch so geschrieben werdenSuchen Sie nach der Datei und überprüfen Sie den Namen des übergeordneten Verzeichnisses:
Diese beiden Alternativen wären langsamer als die Verwendung
-path
, wie Jeff zeigt. Ich lasse sie trotzdem hier als Beispiele, da sie möglicherweise für andere Dinge angepasst werden könnten.quelle