我正在尝试查找在特定路径中拥有文件的所有用户。目前,我在find
和sort
中使用uniq
,但是如果有很多文件/文件夹,可能会花费很长时间。我想知道是否有更快/更好的方法?
$ sudo find / -xdev -type f -printf "%u\n" | sort | uniq
man
root
user1
user2
user3
答案 0 :(得分:1)
根据您的评论,考虑到在Linux / Unix系统上可以比通过管道find
在/
上运行sort | uniq
来获得唯一用户ID列表更有效的位置,系统密码文件将是更好的信息来源。
例如,要获取系统上所有用户帐户的排序唯一列表,可以使用:
$ awk -F: '{print $1}' /etc/passwd | sort
或者如果您更喜欢sed
,那么
$ sed 's/:.*$//' /etc/passwd | sort
这两种方法都比将find
的结果传递到sort | uniq
的速度快几个数量级。
祝您脚本编写顺利。
答案 1 :(得分:0)
可以以“更好的方式”使用find
命令。特别是因为您实际上希望将文件的所有权作为用户列表,但仅限于特定路径。 find命令后的斜杠/
从顶部开始搜索。因此,您将自上而下地获得所有结果。 (这些结果可能接近于列出用户。)
您可以cd
到特定的目录cd /var/www/html/
并运行相同的命令,将/
替换为.
find . -xdev -type f -printf "%u\n" | sort | uniq
或放入路径。
find /var/www/html/ -xdev -type f -printf "%u\n" | sort | uniq