Sie sind nicht angemeldet.

1

06.04.2010, 17:18

Voller Pfad mit ls

Hallo liebes Forum,

ich habe das Problem, dass ich ls dazu bringen möchte, den vollen Pfad anzugeben anstatt nur den Dateinamen. Also z. B. gibt mir ls /etc/init.d ja nur

Quellcode

1
2
3
4
acpid
acpi-support
...
x11-common
ich möchte aber

Quellcode

1
2
3
4
/etc/init.d/acpid
/etc/init.d/acpi-support
...
/etc/init.d/x11-common
haben.
Ok, ich hab schon einige Lösungen dazu gefunden, aber leider arbeitet von denen keine gescheit mit xargs zusammen.

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 330

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

2

06.04.2010, 19:59

Mit ls(1) gar nicht (ls -d /etc/init.d/* ausser Acht gelassen). Wenn dann "find /etc/init.d/"
Einfacher waer es mit der Zsh; da funktioniert ein print -l /etc/init.d/*.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

3

07.04.2010, 21:31

also find <Verzeichnis> hat das Problem, dass auch der Inhalt der Unterverzeichnisse aufgelistet wird. (/etc/init.d war jetzt ein doofes Beispiel, weil es keine Unterverzeichnisse enthält...)

Ich dachte schon, die Option -prune wäre es. Aber leider gibt mir das als Ergebnis nur eine Zeile mit ".".

"." auszuschließen hilft, aber k. A. warum. Würde mich interessieren.

find . ! -name "." -prune listet leider den Inhalt des Verzeichnis ohne den der Unterverzeichnisses auf, aber eben nicht mit dem vollem Pfad sondern mit "." am Anfang.
find /etc ! -name "." -prune funktioniert wieder nicht, und find /etc ! -name "etc" -prune ist auch keine allgemeingültige Lösung, weil ja /etc ja auch eine Datei/Verzeichnis namens etc enthalten könnte..... warum erzähl ich das eigentlich? :-D

Ich werde jetzt einfach mit awk den Pfad vorne ranhängen. Das scheint mir immer noch die einfachste Lösung.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Mela« (07.04.2010, 21:33)


strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 330

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

4

07.04.2010, 22:00

Quellcode

1
find /etc -maxdepth 1
Ggf. noch mit "-f" erweitern.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »strcat« (07.04.2010, 22:01)


5

07.04.2010, 22:02

Da würde ich echt die Shell für knechten:

Quellcode

1
2
3
4
5
6
# aktuelles verzeichnis
find "$(pwd)" -mindepth 1 -maxdepth 1
# absolut
find /etc -maxdepth 1 -mindepth 1
# relativ
find "$(pwd)/.config" -maxdepth 1 -mindepth 1
Da ermittelt die Shell mit pwd den absoluten Pfad und gibt ihn an find.

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

6

07.04.2010, 22:10

wieso pwd, da wird doch der aktuelle pfad eingefügt, aus dem der befehl aufgerufen wird. es ist doch vorgegeben, dass es /etc/init.d/ ist.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

7

07.04.2010, 22:24

Ok, ok, vielen Dank, ich hätte die Manpage mal genauer lesen sollen :)

Aber

Quellcode

1
ls | awk -v a=$PWD '{ print a "/" $0 }'
ist auch recht kurz und hat noch den Vorteil, dass man die Optionen zur Sortierung von ls (wie -S, -t) benutzen kann :ätsch:

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Mela« (07.04.2010, 22:27)


8

06.02.2011, 00:55

Einfach!

Quellcode

1
du

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 330

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

9

06.02.2011, 13:24

Halbgar und unbrauchbar wenn nicht noch "| awk '{print $2}'" übergeben wird.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

Thema bewerten