我需要知道特定目录中文件的组所有者,包括其子目录中的文件。
答案1
您不需要 shell 管道来实现这一点 -find
命令的-printf
操作可以输出组信息:
%g File's group name, or numeric group ID if the group has no name.
%p
如果您还想要文件名,请添加:
find path/to/dir/ -type f -printf '%g %p\n'
同样的事情,但使用外部stat
命令:
find path/to/dir/ -type f -exec stat -c '%G %n' {} +
答案2
答案3
使用find
正如@steeldriver 的回答是最好的解决方案,但如果您必须使用管道,则可以使用以下命令:
ls -l -R /path/to/dir | grep ^- | awk '{print $4}'
-l
告诉ls
使用长列表格式并-R
列出里面的所有子目录/path/to/dir
。然后将输出通过管道传输到,
grep
因此我们仅通过匹配以-
(^-
) 开头的行来选择文件。最后,输出通过管道传输
awk
,我们只打印第四个字段($4
),即组字段。
如果还需要打印文件名,可以使用以下命令:
ls -l -R /path/to/dir | grep ^- | awk '{$1=$2=$3=$5=$6=$7=$8=""; print $0}'