Gibt es eine Möglichkeit, den absoluten Pfad einer zu durchsuchenden Datei abzurufen?
Beispielsweise:
find .. -name "filename"
Es gibt mir Ergebnisse wie, ../filename
aber ich möchte den vollständigen Pfad.
Ich muss im übergeordneten Verzeichnis und seinen untergeordneten Verzeichnissen nach einer bestimmten Datei suchen, die ich später in einem anderen Skript verwenden werde.
Vielen Dank
command-line
find
JorgeeFG
quelle
quelle
Antworten:
Versuchen Sie etwas wie:
quelle
$(cd ..; pwd)
. Hier funktioniert es in Ordnung, aber wenn ich es alleine in einem Terminal mache, kann ich das übergeordnete Verzeichnis nicht abrufen ... Ich erhalte "Bash: <Verzeichnis>: Ist ein Verzeichnis. Und wenn ich es$(cd ..; echo "something")
erhalte" etwas: kein Befehl "(cd ..; pwd)
( ... )
bedeutet in einer Subshell ausführen, die Ausgabe wird nach stdout geschrieben.$( ... )
steht für "Command Substitution". Letzteres kann verwendet werden, als wäre es eine variable Erweiterung.Probieren Sie die folgenden
-exec
Optionen ausfind
:Hinweis:
readlink
Gibt den Wert eines symbolischen Links oder eines kanonischen Dateinamens aus.quelle
Sie können die
bash
Tilde-Erweiterung verwenden, um den absoluten Pfad des aktuellen Arbeitsverzeichnisses abzurufen. Auf diese Weise wird auchfind
der absolute Pfad für die Ergebnisse gedruckt:Wenn in ausgeführt
~/Desktop
, wird dies auf erweitertund druckt Ergebnisse wie:
Wenn Sie diesen Ansatz mit dem übergeordneten Verzeichnis des aktuellen Arbeitsverzeichnisses verwenden möchten, müssen Sie
cd
vor dem Aufruf Folgendes tunfind
:quelle
Der einfachste Weg ist
quelle
find `pwd -P` -name "filename"
Auch mit PWD können Sie das vollständige Verzeichnis anzeigen. Pwd zeigt Ihnen alle Ihre Verzeichnisse, in denen Sie sich befinden, wie das Erweitern des Dateinamens. Hoffe das hat geholfen.
quelle
Dies hat bei mir funktioniert, wird aber nur das erste Mal zurückgegeben.
Vollständige Pfade für alle Vorkommen abrufen (wie von Sergiy Kolodyazhnyy vorgeschlagen)
quelle
Letzte Verzeichniskomponente mit Parameter Expansion entfernen .
Ein Beispiel, wie Sie Mapfile verwenden können , um die Ausgabe von Find für die spätere Verwendung in einem indizierten Array zu speichern.
(Wenn kein Arrayname angegeben ist, ist MAPFILE der Standard-Arrayname.)
quelle