5 ms·
Feel free to demonstrate. Take a long path with nasty characters and give me the ending file name. I want "track1.mp3" returned from: /podcast/with/nasty'--c
by esaym 6y ago
Feel free to demonstrate. Take a long path with nasty characters and give me the ending file name. I want "track1.mp3" returned from:
/podcast/with/nasty'--c h a r$/and/stuff/track1.mp3
- AareyBaba 6y ago$ basename "/podcast/with/nasty'--c h a r$/and/stuff/track1.mp3" track1.mp3
- thezilch 6y ago$ path="/podcast/with/nasty'--c h a r$/and/stuff/track1.mp3" $ echo "${path##*/}" track1.mp3 $ basename "${path}" track1.mp3 $ echo "${path}" | awk -F/ '{print $NF}' track1.mp3
- zimpenfish 6y agoIf you have that in a variable, which you presumably would if you're reading them one at a time, you can use "remove longest matching prefix" substitution. $ i="/podcast/with/nasty'--c h a r$/and/stuff/track1.mp3" $ echo "${i##*/}" track1.mp3 [Edit: 'thezilch beat me too it by a couple of minutes]
- Jare 6y agoYou still get +1 for providing a pointer to the explanation while remaining clear and succinct.
- sergeykish 6y agoThis part is really cryptic, I would prefer $ function remove_longest_matching_prefix () { echo "${1##$2}"; } $ remove_longest_matching_prefix "$i" '*/' track1.mp3 awk -F/ accepts stream as in perl example
- ubercow13 6y agoIn zsh it would be echo “${uglypath:t}”