使用bash查找在Linux的文件夹中拥有文件的所有用户

时间:2019-03-30 04:39:14

标签: linux bash find

我正在尝试查找在特定路径中拥有文件的所有用户。目前,我在findsort中使用uniq,但是如果有很多文件/文件夹,可能会花费很长时间。我想知道是否有更快/更好的方法?

$ sudo find / -xdev -type f -printf "%u\n" | sort | uniq

man
root
user1
user2
user3

2 个答案:

答案 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

示例

/var/www/html个用户中的结果 10 有文件。 enter image description here

然后cd进入测试目录。 6 个用户拥有文件。 enter image description here