查找 - 逻辑运算符

查找 - 逻辑运算符

我想要find显示排除权限 660 和文件的结果。

即它必须向我显示没有权限 660 的文件和所有目录。

我跑:

find "/path/to/dir" -not \( -perm 660 -a -type f \) -exec ls -lA {} \;

但它显示权限为 660 的文件。

结果:

-rw-rw---- 1 root root  124832 Dec 21  2018 READ.ME.txt

重要的!

我正好需要-not和一群\( ... \)

答案1

该表达式-not \( -perm 660 -a -type f \) 将匹配一个目录,因此ls -lA将在该目录上运行并显示其中的所有文件。

如果要查看 的结果find,请不要使用ls不带-d选项的 。或者使用-ls

% find foo -not \( -perm 660 -a -type f \) -exec ls -lA {} \;
total 0
-rw-r--r-- 1 muru muru 0 Nov 18 19:20 READ.ME.txt
-rw-rw---- 1 muru muru 0 Nov 18 19:21 READ.ME.txt1
-rw-r--r-- 1 muru muru 0 Nov 18 19:20 foo/READ.ME.txt
% find foo -not \( -perm 660 -a -type f \) -exec ls -lAd {} \;
drwxr-xr-x 2 muru muru 80 Nov 18 19:21 foo
-rw-r--r-- 1 muru muru 0 Nov 18 19:20 foo/READ.ME.txt
% find foo -not \( -perm 660 -a -type f \) -ls;           
      262      0 drwxr-xr-x   2 muru     muru           80 Nov 18 19:21 foo
      263      0 -rw-r--r--   1 muru     muru            0 Nov 18 19:20 foo/READ.ME.txt

相关内容