I\'m using the find command in a ksh script, and I\'m trying to retrieve just the filenames, rather than the full path. As in, I want it to return text.exe, not //severname/
GNU find natively supports this using -printf
so all that you need to do is
find ... -printf '%f\n'
Update: Oops... this was already covered in the answer by @glenn-jackman which I somehow missed to see.
you can do it with:
find ..... |sed 's#.*/##'
however does it really make sense? if there are two files with same filename but located in different directories, how can you distinguish them?
e.g.
you are in /foo
/foo/a.txt
/foo/bar/a.txt
EDIT
edit the answer to gain some better text formatting.
As you described in comment, so you want to
This could be done in one shot:
find ...|xargs tar -czf /path/to/your/target/a.gz
this will find files, make a tar (a.gz) to your target dir.
Here's another answer.
find | awk -F/ '{print $NF}'
find ... -exec basename {} \;
will also do the trick .. but as @Kent asks, why do you want this?
If you're using GNU find, then
find path -printf "%f\n"
will just print the file name and exclude the path.