当我输入此命令时:
$ find . -perm 777 -maxdepth 1
发生以下错误:
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.
那是什么意思?
答案 0 :(得分:1)
find
自变量的顺序非常重要,因为它们被视为布尔表达式,从左到右并带有短路:
# Deletes *.tmp files
find . -name '*.tmp' -delete
# Deletes ALL file, because -delete is performed before -name
find . -delete -name '*.tmp'
但是,-maxdepth
的行为并非如此。 -maxdepth
是一个可更改find
工作方式的选项,因此无论放置在哪里,它都适用:
# 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
由于您将-maxdepth 1
放在-perm 777
之后,因此您似乎想使-maxdepth
仅适用于某些文件。由于这是不可能的,因此find
会显示此警告。
建议您将其重写为find . -maxdepth 1 -perm 777
,以明确表明您打算将-maxdepth
应用于所有内容。