Ho un file (ad esempio chiamato list.txt
) che contiene percorsi relativi ai file, un percorso per linea, vale a dire qualcosa di simile:Script bash di Ubuntu: come dividere il percorso per l'ultima barra?
foo/bar/file1
foo/bar/baz/file2
goo/file3
ho bisogno di scrivere uno script bash che elabora un percorso alla volta, lo divide nell'ultima barra e quindi avvia un altro processo alimentando i due pezzi del percorso come argomenti. Finora ho solo la parte loop:
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
Come dividere? Funzionerà nel caso degenere quando il percorso non ha barre?
Thx
Questo è in realtà "part1 =' dirname $ p'/"poiché ho bisogno dell'ultima barra, ma a parte questo è perfetto :-) –
Questo si romperà miseramente non appena un nome file contiene uno spazio o simboli divertenti .. . ':-(' –
Tale rottura è banale da risolvere di co urse: 'part1 =" $ (dirname "$ p") "' e 'part2 =" $ (basename "$ p") "' – zenaan