Delete everything before last / in a file path
Using sed
for this is vast overkill -- bash has extensive string manipulation built in, and using this built-in support is far more efficient when operating on only a single line.
s=/home/rtz11/files/testfiles/547/prob547455_01basename="${s##*/}"echo "$basename"
This will remove everything from the beginning of the string greedily matching */
. See the bash-hackers wiki entry for parameter expansion.
If you only want to remove everything prior to the last /
, but not including it (a literal reading of your question, but also a generally less useful operation), you might instead want if [[ $s = */* ]]; then echo "/${s##*/}"; else echo "$s"; fi
.