How to get the file name while using find command? When I use find command to search particular type of files from a directory and subdirectories, I get the whole path of that file, how do I get the file name only? The problem I am facing is when I am moving that found file to archive directory, it says "there is no such directory" and it is because of whole path I am getting while searching for the file.
Asked
Active
Viewed 226 times
0
-
I think there's something wrong with your logic. Can you give a use case where this is used, before you select an answer? – Andrew M. Sep 21 '10 at 17:55
-
well I am looking for a way through go through a directory and find a file with particular name , copy that file to remove server and then move that file to archive directory with time stamp. I am using 'find' for looping over files in that particular directory. – yogsma Sep 21 '10 at 18:09
2 Answers
5
The basename
command will give you just the name of the file and not the full path, which you can execute on your found file like this:
find . -name filename -exec basename {} \;

Jed Daniels
- 7,282
- 2
- 34
- 42
4
Use find ... -printf '%f\n'
Or, to solve your stated problem:
find ... -name FOO -print0 | xargs --no-run-if-empty --null mv --target-directory=TARGET

Teddy
- 5,204
- 1
- 23
- 27