KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm new to sed, and need to grab just the filename from the output of find . I need to have find output the whole path for another part of my script, but I want to just print the filename without the path. I also need to match starting from the beginning of the line, not from the end. In english, I want to match, the first group of characters ending with ".txt" not containing a "/". Here's my attempt that doesn't work: ryan@fizz:~$ find /home/ryan/Desktop/test/ -type f -name \*.txt /home/ryan/Desktop/test/two.txt /home/ryan/Desktop/test/one.txt ryan@fizz:~$ find /home/ryan/Desktop/test/ -type f -name \*.txt | sed s:^.*/[^*.txt]::g esktop/test/two.txt ne.txt Here's the output I want: two.txt one.txt Ok, so the solutions offered answered my original question, but I guess I asked it wrong. I don't want to kill the rest of the line past the file suffix i'm searching for. So, to be more clear, if the following: bash$ new_mp3s=\`find mp3Dir -type f -name \*.mp3\` && cp -rfv $new_mp3s dest `/mp3Dir/one.mp3' -> `/dest/one.mp3' `/mp3Dir/two.mp3' -> `/dest/two.mp3' What I want is: bash$ new_mp3s=\`find mp3Dir -type f -name \*.mp3\` && cp -rfv $new_mp3s dest | sed ??? `one.mp3' -> `/dest' `two.mp3' -> `/dest' Sorry for the confusion. My original question just covered the first part of what I'm trying to do. 2nd edit: here's what I've come up with: DEST=/tmp && cp -rfv `find /mp3Dir -type f -name \*.mp3` $DEST | sed -e 's:[^\`].*/::' -e "s:$: -> $DEST:" This isn't quite what I want though. Instead of setting the destination directory as a shell variable, I would like to change the first sed operation so it only changes the cp output before the "->" on each line, so that I still have the 2nd part of
Tags (comma-separated)
Save Edits
Cancel