Ich habe eine Datei (sagen genannt list.txt
), die relativen Pfade zu Dateien enthält, einen Pfad pro Zeile, also etwa so:Ubuntu bash script: Wie spalte ich den Weg nach dem letzten Schrägstrich?
foo/bar/file1
foo/bar/baz/file2
goo/file3
Ich brauche einen Bash-Skript zu schreiben, die einen Pfad zu einer Zeit verarbeitet, teilt es beim letzten Schrägstrich und startet dann einen anderen Prozess, der die beiden Teile des Pfades als Argumente liefert. Bisher habe ich nur den Looping-Teil:
for p in `cat list.txt`
do
# split $p like "foo/bar/file1" into "foo/bar/" as part1 and "file1" as part2
inner_process.sh $part1 $part2
done
Wie teile ich? Funktioniert das im entarteten Fall, wenn der Pfad keine Schrägstriche hat?
Thx
Das ist eigentlich "part1 =' dirname $ p'/"da brauche ich den letzten Schrägstrich, aber ansonsten ist es perfekt :-) –
Das wird kläglich zerbrechen, sobald ein Dateiname ein Leerzeichen oder lustige Symbole enthält .. . ':-(' –
Ein solcher Bruch ist trivial zu lösen von Co urse: 'part1 =" $ (dirname "$ p") "' und 'part2 =" $ (basename "$ p") "' – zenaan