Linux: Pfad trennen und in einer Liste speichern?

... komplette Frage anzeigen

2 Antworten

Hallo

Ich moechte unter Linux Shell gerne einen Pfad (z.B.
/etc/script/finished/) getrennt und ohne / in einer Liste speichern,
damit ich die einzelnen Worte weiter nutzen kann.

Du meinst sowas?:

find . -iname '*.txt' -maxdepth 2 2>/dev/null | sed 's/\\// /g'

Aber brauchst Du tatsächlich alle Bestandteile des Pfades und des Dateinamens?

Oder willst Du eher nur den letzten Eintrag, etwa so?:

find . -iname '*.txt' -maxdepth 2 2>/dev/null | awk -F/ '{print $NF}'

oder so:

find . -iname '*.txt' -maxdepth 2 2>/dev/null | grep -oE "[^/]+$"

und was ist das:

find list.txt -type f -exec sed -i 's/\\// /g' {} \\;

für ein Konstrukt, was kommt da bei Dir raus?

Linuxhase

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von flollie
11.03.2016, 08:43

Hallo. Vielen Dank fuer deine Antwort. Ich brauche die einzelnen Bereiche, um verschiedene Pfade darstellen zu koennen.

find list.txt -type f -exec sed -i 's/\// /g' {} \;

Damit werden alle / zu Leerzeichen umgewandelt und ich kann durch awk jeden einzelnen Pfad abgreifen.

0

Habs geloest. Ich speicher den Pfad in einer list.txt und wende dann folgenden Befehl an: find list.txt -type f -exec sed -i 's/\\// /g' {} \\;

So sind alle / Leerzeichen und mit awk kann ich die einzelnen Worte separieren.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von ralphdieter
13.04.2016, 14:42

Das ist von hinten durch die Brust ins Auge: "find XXX -exec YYY" wird YYY genau einmal (mit Argument XXX) aufrufen, falls die Datei da ist.

sed -i 's:/: :g' list.txt

macht also genau dasselbe wie Dein Befehl.

1

Was möchtest Du wissen?