How to split path by last slash?

bash, split

Solution

Use `basename` and `dirname`, that's all you need.

part1=$(dirname "$p")
part2=$(basename "$p")

Problem

I have a file (say called `list.txt`) that contains relative paths to files, one path per line, i.e. something like this: ``` foo/bar/file1 foo/bar/baz/file2 goo/file3 ``` I need to write a bash script that processes one path at a time, splits it at the last slash and then launches another process feeding it the two pieces of the path as arguments. So far I have only the looping part: ``` 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 ``` How do I split? Will this work in the degenerate case where the path has no slashes?

Original source

Related problems