423 Stimmen

Wie kann ich unter Linux eine Liste von Dateien mit ihrem absoluten Pfad erstellen?

Ich schreibe ein Shell-Skript, das Dateipfade als Eingabe akzeptiert.

Aus diesem Grund muss ich rekursive Dateilisten mit vollständigen Pfaden erstellen. Zum Beispiel, die Datei bar hat den Pfad:

/home/ken/foo/bar

aber, soweit ich sehen kann, sind beide ls y find geben nur relative Pfadangaben an:

./foo/bar   (from the folder ken)

Es scheint eine offensichtliche Anforderung zu sein, aber ich kann nichts in der find o ls man-Seiten.

Wie kann ich eine Liste der Dateien in der Shell einschließlich ihrer absoluten Pfade erstellen?

2voto

fangxlmr Punkte 11

Versuchen Sie dies.

for name in /home/ken/foo/bar/*
do
    echo $name
done

Sie können abs path mit for Schleife und echo einfach ohne find .

1voto

Adam Punkte 11

Die meisten, wenn nicht sogar alle, der vorgeschlagenen Methoden führen zu Pfaden, die nicht direkt in einem anderen Terminalbefehl verwendet werden können, wenn der Pfad Leerzeichen enthält. Im Idealfall werden den Ergebnissen Schrägstriche vorangestellt. Dies funktioniert bei mir unter macOS:

find / -iname "*SEARCH TERM spaces are okay*" -print 2>&1  | grep -v denied |grep -v permitted |sed -E 's/\ /\\ /g'

1voto

kenorb Punkte 134883

stat

Absoluter Pfad einer einzelnen Datei:

stat -c %n "$PWD"/foo/bar

1voto

JGurtz Punkte 1065

Dies ergibt den kanonischen Pfad (löst Symlinks auf): realpath FILENAME

Wenn Sie einen kanonischen Pfad zum Symlink selbst wollen, dann: realpath -s FILENAME

1voto

Raveen Kumar Punkte 71

Das hat bei mir funktioniert. Aber die Liste war nicht alphabetisch geordnet.

find "$(pwd)" -maxdepth 1

Dieser Befehl listet sowohl alphabetisch als auch die versteckten Dateien auf.

ls -d -1 "$PWD/".*; ls -d -1 "$PWD/"*;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X