将find命令与-perm和-maxdepth一起使用

时间:2018-11-30 19:05:26

标签: linux permissions find

当我输入此命令时:

$ 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.

那是什么意思?

1 个答案:

答案 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应用于所有内容。