[Bash] ls command: Wie bekomme ich eine rekursive Full-Path-Auflistung, eine Zeile pro Datei?


Answers

Verwenden Sie finden:

find .
find /home/dreftymac

Wenn Sie nur Dateien wollen (Verzeichnisse, Geräte usw. weglassen):

find . -type f
find /home/dreftymac -type f
Question

Wie kann ich eine flache Liste von rekursiven Ein-pro-Zeile-Pfaden ausgeben?

Zum Beispiel möchte ich nur eine flache Liste von Dateien mit ihren vollständigen Pfaden:

/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/
/home/dreftymac//alpha.txt
/home/dreftymac//bravo.txt
/home/dreftymac//charlie.txt

ls -a1 fast das, was ich brauche, aber ich will keine ls -a1 , ich will volle Pfade.




Viele Antworten sehe ich. Das ist meins, und ich denke, ziemlich nützlich, wenn Sie am Mac arbeiten.

Ich bin sicher, dass Sie wissen, dass einige "Bündel" -Dateien vorhanden sind ( .app , .rtfd , .workflow usw.). Und wenn man sich Finders Fenster ansieht, erscheinen sie als einzelne Dateien. Aber das sind sie nicht. Und $ ls oder $ find sehen sie als Verzeichnisse ... Also, es sei denn, du musst ihre Inhalte ebenfalls auflisten, das funktioniert für mich:

find . -not -name ".*" -not -name "." | egrep -v "\.rtfd/|\.app/|\.lpdf/|\.workflow/"

Natürlich ist dies für das Arbeitsverzeichnis, und Sie können die Erweiterungen anderer Bundles hinzufügen (aber immer mit einem / nach ihnen). Oder irgendwelche anderen Erweiterungen, wenn nicht Bündel ohne das / .

Interessant ist das " .lpdf/ " (mehrsprachiges pdf). Es hat normale " .pdf " Erweiterung (!!) oder keine im Finder. Auf diese Weise erhalten Sie (oder es zählt nur 1 Datei) für dieses pdf und nicht eine Menge Zeug ...




Ich denke für eine flache Liste ist der beste Weg:

find -D tree /fullpath/to-dir/ 

(oder um es in einer TXT-Datei zu speichern)

find -D tree /fullpath/to-dir/ > file.txt



Oh, wirklich eine lange Liste von Antworten. Es hat viel geholfen und schließlich habe ich durch eigenes geschaffen, was ich gesucht habe:

So listen Sie alle Dateien in einem Verzeichnis und seinen Unterverzeichnissen auf:

find "$PWD" -type f

So listen Sie alle Verzeichnisse in einem Verzeichnis und seinen Unterverzeichnissen auf:

find "$PWD" -type d

So listen Sie alle Verzeichnisse und Dateien in einem Verzeichnis und seinen Unterverzeichnissen auf:

find "$PWD"



Versuchen Sie den folgenden einfacheren Weg:

find "$PWD"



Das Hinzufügen eines Platzhalters zum Ende eines ls-Verzeichnisses erzwingt vollständige Pfade. Im Moment hast du folgendes:

$ ls /home/dreftymac/
foo.txt
bar.txt

/alpha.txt
/bravo.txt
/charlie.txt

Sie könnten dies stattdessen tun:

$ ls /home/dreftymac/*
/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/:
alpha.txt
bravo.txt
charlie.txt

Leider wird hier nicht der vollständige Pfad für rekursive Verzeichnisse angezeigt, daher ist es möglicherweise nicht die vollständige Lösung, nach der Sie suchen.




du -a

Praktisch für einige begrenzte Appliance-Shells, in denen find / locate nicht verfügbar ist.




Ich kannte den Dateinamen, wollte aber auch das Verzeichnis.

Finde $ PWD | fgrep Dateiname

funktionierte perfekt in Mac OS 10.12.1




Ich weiß nicht über den vollständigen Pfad, aber Sie können -R für Rekursion verwenden. Alternativ, wenn Sie nicht auf ls , können Sie nur find * .




tar cf - $PWD|tar tvf -             

Dies ist langsam, arbeitet aber rekursiv und druckt sowohl Verzeichnisse als auch Dateien. Sie können es mit awk / grep verschicken, wenn Sie nur die Dateinamen ohne alle anderen Informationen / Verzeichnisse haben wollen:

tar cf - $PWD|tar tvf -|awk '{print $6}'|grep -v "/$"          



Hier ist eine Teilantwort, die die Verzeichnisnamen zeigt.

ls -mR * | sed -n 's/://p'

Erläuterung:

ls -mR * listet die vollständigen Verzeichnisnamen auf, die mit einem ':' enden, und listet dann die Dateien in diesem Verzeichnis separat auf

sed -n 's/://p' findet Zeilen, die in einem Doppelpunkt enden, entfernt den Doppelpunkt und druckt die Zeile aus

Durch das Iterieren der Verzeichnisliste sollten wir auch die Verzeichnisse finden können. Arbeite immer noch daran. Es ist eine Herausforderung, die Wildcards durch xargs zu bekommen.