13

This is probably not a Ubuntu question as such, but a Linux one instead, still hope some Linux user out there can help me understand this.

I'm trying to use the find command to look for some files an a directory tree.

Unfortunately some of the files are named beginning with a dash, like -000.jpg, -002.jpg, 00n.jpg and so on. However, every time that the command locates one of the files named that way, it just interrupts the process and complains in the following way:

find: unknown predicate `-001.jpg'

or whatever the file beginning with a dash is named.

It seems to me that somehow the find command is interpreting the resulting filename as an argument, but I haven't found a way to circumvent this behavior.

Thanks in advance for sharing your wisdom.

2
  • This is strange behavior and probably a bug...but I wonder if what's going on is that you have an expression with wildcards in your find command itself that is being expanded by the shell into filenames starting with - (before it is given to find). Can you edit your question to add the full and exact text of the find command you're issuing, which is producing this problem? May 25, 2012 at 19:02
  • What is the exact command line you are using? May 25, 2012 at 19:34

1 Answer 1

14

Make sure you quote the patterns you provide to find, otherwise the shell may expand them if there are matching files in the current dir.

find /some/dir -name *.jpg   # bad
find /some/dir -name "*.jpg" # good

See http://mywiki.wooledge.org/UsingFind.

4
  • I just did find ~/folder -name "*.png" and got the error stated in the title. Jun 27, 2015 at 23:02
  • @isomorphismes, that line will not produce that error message on its own. It must be caused by other factors. E.g. if you try to put the find command in a variable, then run that variable, that is a plausible way to get that type of error. If that's the case, the solution is simple; don't put commands in variables.
    – geirha
    Jun 28, 2015 at 7:35
  • I accidentally restarted my computer in the last two days and it works now, so I guess I can't reproduce the problem or test it any longer. I can't think of what would have changed but it wasn't using a variable. I just ran the naked line. Jun 30, 2015 at 20:21
  • 2
    It may have been that I used find /some/dir -name="*.jpg" with a = instead of a space. HTH some googler. Jul 8, 2015 at 23:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.