我想为所有小组运行find /path1 -group group1
。
这个概念可能是这样的:
groups > array1 | for i in array1 do find /path1 -group array[i]
答案 0 :(得分:1)
您可以在循环中使用进程替换:
while read -d' ' -r g; do
find . -group "$g"
done < <(groups)
答案 1 :(得分:1)
您可以-ls
与find
一起列出文件信息,然后使用awk
根据group
值将输出重定向到文件(第6列):
find /path -ls | awk '{ print $0 >> "group_"$6".txt"; }'
答案 2 :(得分:0)
我想运行 find / path1 -group group1 ,但是对于所有群组。
您可以在find
的一个实例中使用:
#!/bin/bash
read -a GRPS < <(exec groups)
ARGS=()
for G in "${GRPS[@]}"; do
ARGS+=("-o" "-group" "$G")
done
ARGS=('(' "${ARGS[@]:1}" ')')
find /path1 "${ARGS[@]}"
如果你尝试echo find /path1 "${ARGS[@]}"
,它会显示如下内容:
find /path1 ( -group root -o -group bin -o -group daemon -o -group sys -o -group adm )
答案 3 :(得分:0)
您可以使用
find /path -group group1 -or -group2
或
for i in group1 group2 ; do find /path1 -group $i ; done
答案 4 :(得分:0)
如果您不关心哪些组拥有该文件,您可以使用以下命令查找任何已识别组所拥有的所有文件:
find /path ! -nogroup
将列出具有已识别所有者组ID的所有文件。
如果您想按照群组所有权订购,请使用以下命令:
find /path -printf '%g:%f\n' |sort
将输出这样的行:
root:.bashrc
users:userfiles