unix 查找全局可读的所有目录

dba5bblo  于 2022-11-04  发布在  Unix
关注(0)|答案(4)|浏览(176)

**无法使用find,因为出现权限被拒绝错误

我试图在/students中找到所有世界可读的目录。这是我目前所拥有的:

grep 'r-x' | cut -c8-10 | ls -l /students | sort | uniq -c

我不明白为什么这样做不起作用。我告诉shell搜索ls -l的第8 - 10个字符中出现的“r-x”,这是其他用户的权限然后我对输出进行排序,并使用uniq -c显示匹配结果的计数。这是我对shell脚本应该做什么的理解,我不明白为什么不这样做。如有任何帮助,我们将不胜感激!
由于某种原因,它提取的不仅仅是其他人可读的目录。
下面是一些示例输出(我省略了大部分输出)

68bkxrlz

68bkxrlz1#

不要解析ls,而是使用find

find /students -perm -o=r

这将列出/students中全局可读的所有文件和目录。
如果您不想递归到子目录,而只想查找目录,可以说:

find /students -maxdepth 1 -type d -perm -o=r
mpgws1up

mpgws1up2#

我告诉shell在ls -l的第8 - 10个字符中搜索“r-x”,这是其他用户的权限(因此是全局可读的)。
不,你不是。你要在行中的任何地方寻找“r-x”,然后取找到的行的第8到第10个字符。

find  /students -mindepth 1 -maxdepth 1 -type d -perm -005 | ...

"Why you shouldn't parse the output of ls(1)"

nnt7mjpx

nnt7mjpx3#

-d
-d用于仅列出目录。*/告诉 *nix仅搜索当前目录。

46qrfjad

46qrfjad4#

ls -lR |grep "^d" | cut -c8-10 | grep 'r-x' | sort | uniq -c

相关问题