我想在Linux目录中找到所有 user1
拥有的和 user1
的组可执行文件。
使用find
以下工作正常:
find /$mydir -type f -user user1 -perm -010
但需要知道如何使用ls
和grep
执行相同的操作。
答案 0 :(得分:0)
如果未指定find
,maxdepth
命令会执行递归搜索。
对于当前目录:
当您了解user1的群组时, ls -l | awk '$3=="user1"&&$4=="user1group"&&substr($1,1,1)=="-"&&substr($1,7,1)=="x" {print $NF}'
将会有效。
或者在所有子文件夹中的组之间使用递归搜索:
user="user1";for s in `groups $user| sed 's/.*: //g'`; do awkstmt="ls -R -l | awk '\$3==\"$user\"&&\$4==\""$s"\"&&substr(\$1,1,1)==\"-\"&&substr(\$1,7,1)==\"x\" {print \$NF}'"; eval $awkstmt; done | sort | uniq
或在当前文件夹中的组之间进行递归搜索:
user="user1";for s in `groups $user| sed 's/.*: //g'`; do awkstmt="ls -l | awk '\$3==\"$user\"&&\$4==\""$s"\"&&substr(\$1,1,1)==\"-\"&&substr(\$1,7,1)==\"x\" {print \$NF}'"; eval $awkstmt; done | sort | uniq