linux上的文件夹中的文件所有者列表

Anu*_*pam 11 linux shell

我有一个包含许多文件的文件夹.这些文件已由许多不同的用户创建.我不知道shell脚本.

我需要获取文件所有者的用户名(仅限)列表.

我可以保存ls -l的输出,然后使用perl python等解析它...

但是我怎么能用shell脚本来做呢?

Dir*_*tel 10

一个简单的是

ls -l /some/dir/some/where | awk '{print $3}' | sort | uniq
Run Code Online (Sandbox Code Playgroud)

它为您提供了一个独特的排序所有者列表.

  • @DanielKamilKozar也许这并不奇怪,但如果你在系统的文件名中允许空格,那么手头有更大的问题. (2认同)

Civ*_*Fan 5

到目前为止,这两种解决方案都不错,但也有其局限性。

这应该可以保证您正确并递归地搜索目录树中的每个文件。

sudo find /some/dir/ -exec stat -c "%U" {} + | sort | uniq
Run Code Online (Sandbox Code Playgroud)

换句话说,递归搜索 中的文件/some/dir,并stat -c "%U"在文件上执行(打印用户名),以尽可能少的调用stat-exec <cmd> {} +语法),然后当然sort是用户名列表,然后将它们剔除到unique 集用户名。

要将搜索限制为仅常规文件,请添加-type f子句:

sudo find /some/dir/ -type f -exec stat -c "%U" {} + | sort | uniq
                     _______
Run Code Online (Sandbox Code Playgroud)

  • 在 Freebsd 上:`find /some/dir/ -type f -exec stat -f "%Su" {} + | 排序 | 唯一的`。OP 只查找 *files*,因此我添加了 `-type f`。 (2认同)