5 ms·
Why am I not surprised that the PERL part could be solved with bash in the same space. Why are you so eager to use lang on top of lang, in such simple cases?
by high_priest 6y ago
Why am I not surprised that the PERL part could be solved with bash in the same space. Why are you so eager to use lang on top of lang, in such simple cases?
- esaym 6y agoFeel 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}”
- deleted 6y ago[deleted]