When I Enter this command:
$ find . -perm 777 -maxdepth 1
The following error occures:
find: warning: you have specified the -maxdepth option after a non-option argument -perm, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
What does that mean?
Advertisement
Answer
The order of find arguments is very important, because they are evaluated as a boolean expression left-to-right with short circuiting:
# Deletes *.tmp files find . -name '*.tmp' -delete # Deletes ALL file, because -delete is performed before -name find . -delete -name '*.tmp'
However, -maxdepth does not behave like this. -maxdepth is an option that changes how find works, so it applies the same no matter where it’s placed:
# Deletes all '*.tmp' files, but only in the current dir, not subdirs find . -maxdepth 1 -name '*.tmp' -delete # Deletes all '*.tmp' files, still only in the current dir find . -name '*.tmp' -delete -maxdepth 1
Since you put the -maxdepth 1 after a -perm 777, it looks like you are trying to make -maxdepth only apply to certain files. Since this is not possible, find prints this warning.
It suggests that you rewrite it into find . -maxdepth 1 -perm 777 to make it clear that you intended -maxdepth to apply to everything.