find: Dateinname Pfad anstatt Pfad/Dateinname
-
- Beiträge: 75
- Registriert: 26.05.2007 10:25:48
find: Dateinname Pfad anstatt Pfad/Dateinname
Hi Leute,
weiß jemand wie ich mir ein Ergebnis von find darstellen kann, dass jeweils "<Dateiname> <Pfad>" anstatt "<Pfad><Dateiname>" augegeben wird?
Danke im Vorraus,
DS
weiß jemand wie ich mir ein Ergebnis von find darstellen kann, dass jeweils "<Dateiname> <Pfad>" anstatt "<Pfad><Dateiname>" augegeben wird?
Danke im Vorraus,
DS
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Pipe die Ausgabe durch ein Programm das sie umformatiert.
Beispielsweise so
oder so
Beispielsweise so
Code: Alles auswählen
find DIR | sed 's,\(.*\)/\(.*\),\2 \1,'
Code: Alles auswählen
find DIR | awk -F/ '{ printf $NF " "; sub("/[^/]*$",""); print }'
Use ed once in a while!
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Oder mit "bash"-Mitteln.
Code: Alles auswählen
for i in $(find . -type f); do printf "%-50s --> %-s\n" "DIR: ${i%/*}" "FILE: ${i##*/}"; done
Oh, yeah!
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Warum mit Bash-Hilfsmitteln? find bringt doch schon selber ein printf mit. Siehe auch man find.
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
genau, warum einfach wenns auch kompliziert geht.
so in etwa:
so in etwa:
Code: Alles auswählen
find /bin -name mount -printf "%P %h\n"
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
(du meinst GNU find)nepos hat geschrieben:find bringt doch schon selber ein printf mit.
Nett. Aber nichts für welche, wie mich, die nach der Unix-Philosophie leben.
Mit anderen Worten: find könnte simpler sein, wenn die Leute kein eingebautes printf wöllten. Oder: Wenn man etwas schon durch die Kombination von bestehenden Programmen erreicht, dann sollte man die Funktionalität nicht noch zusätzlich *in* ein Programm einbauen, außer es gibt sehr gute Gründe dafür. (Stichwort: Orthogonalität)
However ...
Use ed once in a while!
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Ist wohl warub13 hat geschrieben:genau, warum einfach wenns auch kompliziert geht.
so in etwa:Code: Alles auswählen
find /bin -name mount -printf "%P %h\n"
Oh, yeah!
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Das ist mir schon klar. Da gibts einige mehr Tools, die in der GNU-Version mehr können bzw. sich anders verhalten. Da bin ich selber schon drüber gestolpert (GNU tar vs. Solaris tar). Andererseits, wir sind hier in einem Linux-Forum und der Fragesteller hat auch nichts davon gesagt, dass das ganze auf Solaris, HPUX, *BSD oder sonstigem funktionieren soll. Von daher finde ich meinen Hinweis auf das find-eigene printf schon okMeillo hat geschrieben:(du meinst GNU find)nepos hat geschrieben:find bringt doch schon selber ein printf mit.
Nett. Aber nichts für welche, wie mich, die nach der Unix-Philosophie leben.
Mit anderen Worten: find könnte simpler sein, wenn die Leute kein eingebautes printf wöllten. Oder: Wenn man etwas schon durch die Kombination von bestehenden Programmen erreicht, dann sollte man die Funktionalität nicht noch zusätzlich *in* ein Programm einbauen, außer es gibt sehr gute Gründe dafür. (Stichwort: Orthogonalität)
However ...
Ob man solche Features unbedingt immer in "einfache" Tools wie find und Co einbauen sollte, das ist ein ganz anderes Thema und gehört denke ich nicht hierher
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Sehe ich nicht anders. Ich finde deine Antwort mit dem printf sehr gut. (Das ``Nett'' war ganz ernst so gemeint.)nepos hat geschrieben: Andererseits, wir sind hier in einem Linux-Forum und der Fragesteller hat auch nichts davon gesagt, dass das ganze auf Solaris, HPUX, *BSD oder sonstigem funktionieren soll. Von daher finde ich meinen Hinweis auf das find-eigene printf schon ok
Es ist off Topic, das stimmt.Ob man solche Features unbedingt immer in "einfache" Tools wie find und Co einbauen sollte, das ist ein ganz anderes Thema und gehört denke ich nicht hierher
Wenn die Frage in einem Thread beantwortet ist, dann ist es IMO nett noch ein bisschen über das Thema hinaus zu diskutieren. Der Hintergrund ist: Es soll kein Frage-Antwort-Forum sein, sondern wir alle sollten voneinander lernen. Als Beispiel [0]: Die Frage war im vierten Post schon beantwortet, die anschließende Diskussion war aber hoch spannend, und sicher nicht nur für mich bereichernd. Ebenso in [1].
[0] http://debianforum.de/forum/viewtopic.php?f=34&t=114564
[1] http://debianforum.de/forum/viewtopic.php?f=29&t=113640
Das printf von find ist ein sehr gutes Beispiel gegen die Unix Philosophie, und gleichzeitig lässt sich hier sehr schön zeigen wie man ihr folgen kann. Deshalb mein Kommentar.
Use ed once in a while!
-
- Beiträge: 75
- Registriert: 26.05.2007 10:25:48
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Kann ich "%h" auch noch weiter manipulieren um den Pfad z.B. nur ab einer bestimmten Tiefe anzuzeigen also %h ohne führendes "foo/bar" auszugeben wenn ich "find /foo/bar" gemacht habe?
Gruss,
DS
Gruss,
DS
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Mit meinem Ansatz problemlos.whatsmyname2009 hat geschrieben:Kann ich "%h" auch noch weiter manipulieren um den Pfad z.B. nur ab einer bestimmten Tiefe anzuzeigen also %h ohne führendes "foo/bar" auszugeben wenn ich "find /foo/bar" gemacht habe?
(Danke für die Frage, da sie den Nagel auf den Kopf trifft.)
Use ed once in a while!
-
- Beiträge: 75
- Registriert: 26.05.2007 10:25:48
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Ja gut aber wie denn?
Gruss,
Daniel
Gruss,
Daniel
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Ein Beispiel für's Lösen Deines Problems mittels sed oder awk hast Du jeweils von Meillo brkommrn. Die Details, die Dir fehlen, um dies Deinen Wünschen anzupassen findest Du per "man 1 sed" bzw "man 1 awk".whatsmyname2009 hat geschrieben:Ja gut aber wie denn?
-
- Beiträge: 75
- Registriert: 26.05.2007 10:25:48
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Wie oft gibt es verschiedene Lösungen. Aber wie kann ich denn fprint-Variablen manipulieren ("${h#/foo/bar/}" wie in der Shell funktioniert hier nicht, oder)?yeti hat geschrieben:Ein Beispiel für's Lösen Deines Problems mittels sed oder awk hast Du jeweils von Meillo brkommrn. Die Details, die Dir fehlen, um dies Deinen Wünschen anzupassen findest Du per "man 1 sed" bzw "man 1 awk".whatsmyname2009 hat geschrieben:Ja gut aber wie denn?
Gruss,
DS
Re: find: Dateinname Pfad anstatt Pfad/Dateinname
Wenn du ``foo/bar'' am Anfang der Zeile wegschneiden willst, dann mach doch genau das. Z.B. mit dem s Kommando von sed. Einfach ein passendes s Kommando an den Anfang des sed-Programms setzen.whatsmyname2009 hat geschrieben:Ja gut aber wie denn?
Ich kann dir das natürlich problemlos aus dem Kopf hier hinschreiben ... aber eigentlich mache ich das viel zu oft. Es ist sicher nicht ganz schlecht, wenn du selbst mal nachschaust und uns was bietest. Das muss keine perfekte Lösung sein, aber etwas das schon ungefähr tut was gewünscht ist. Dann helfen wir weiter, und du lernst eine Menge dabei.
(aber btw: den von dir als Beispiel gegebenen Fall deckt doch %P schon ab.)
Use ed once in a while!