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?

414voto

Matthew Scharley Punkte 121038

Wenn Sie find einen absoluten Pfad angeben, gibt es absolute Pfade aus. Zum Beispiel, um alle .htaccess-Dateien im aktuellen Verzeichnis zu finden:

find "$(pwd)" -name .htaccess

oder wenn sich Ihr Gehäuse ausdehnt $PWD in das aktuelle Verzeichnis:

find "$PWD" -name .htaccess

find stellt dem angegebenen Pfad einfach einen relativen Pfad zu der Datei in diesem Pfad voran.

Greg Hewgill schlug auch die Verwendung von pwd -P wenn Sie Symlinks in Ihrem aktuellen Verzeichnis auflösen wollen.

261voto

balki Punkte 24248
readlink -f filename 

gibt den vollständigen absoluten Pfad an, aber wenn die Datei ein Symlink ist, erhalten Sie den endgültigen aufgelösten Namen.

178voto

user431529 Punkte 2062

Verwenden Sie dies für Verzeichnisse (die / nach ** wird in der Bash benötigt, um es auf Verzeichnisse zu beschränken):

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

dies für Dateien und Verzeichnisse direkt unter dem aktuellen Verzeichnis, deren Namen ein . :

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

dies für alles:

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

T http://www.zsh.org/mla/users/2002/msg00033.html

In der Bash, ** ist rekursiv, wenn Sie die Option shopt -s globstar .

53voto

Vinko Vrsalovic Punkte 252104

Sie können verwenden

find $PWD 

in der Bash

38voto

didi Punkte 667
ls -d "$PWD/"*

Dies sieht nur in der aktuell Verzeichnis. Es setzt "$PWD" in Anführungszeichen, falls es Leerzeichen enthält.

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