0

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.

yogsma
  • 245
  • 1
  • 3
  • 12
  • 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 Answers2

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