我想要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