如何在Linux目录中获取所有文件所有者的列表

时间:2020-03-05 15:26:52  来源:igfitidea点击:

本教程旨在在Linux目录中获取所有文件的所有者列表。
这里显示的命令是普遍的,预计将在任何Linux发行版上工作。
我的实验室虽然是基于Ubuntu 18.04,16.04和CentOS 7.

使用文件,目录和用户权限是管理Linux系统时的每日基础任务。
几乎所有在Linux上的一切都是文件,并知道如何检查和更改文件/目录的所有权。

使用stat命令列出目录中文件的所有者

该数据是用于在Linux/UNIX系统上显示文件或者文件系统状态的命令行工具。
在Ubuntu和所有Debian基于Debian的系统上,STAT命令由Coreutils包提供。
如果由于任何原因未安装此包,则可以使用命令安装它:

$sudo apt-get -y install coreutils

在CentOS上,Coreutils包也提供了Coreutils包,如果缺失,可以使用yum安装:

$sudo yum -y install coreutils

一旦确认命令存在,我们将使用以下选项来获取目录上文件的所有者:

-c:指定format%u:form的for for for for for for for for for for for for for for for for formulture

所以命令语法是:

stat -c %U  <file>

对于所有文件,请使用通配符*标记。
请参见下面的示例:

$cd ~
$stat -c %U *
jmutai
jmutai
jmutai

此输出的问题是文件和所有者之间没有映射。
我们需要使用BASH概念来映射文件和所有者。
所以我们将运行以下命令:

$cd /dir
$files=`ls`
$for file in $files; do owner=`stat -c %C $file`; echo $file $owner; done

上述输出将格式为<file> <所有者>,应该易于解释。

Development jmutai
Documents root
ping_all.sh dan
examples.desktop benard

对于文件的其他统计数据有效格式序列,请检查其手册页:

$man stat

使用Find命令列出目录中文件的所有者

查找是一个常用于在目录中搜索文件的Linux命令行工具。
使用一些regex和print命令,我们可以在目录中列出文件的所有者

要使用的确切命令语法是:

# find /dir -printf '%u\n'

默认情况下,这将进行递归搜索和列表。
我们可以进行进一步过滤,如打印唯一用户名,以避免重复。
为此,请使用u选项管制输出来排序命令:

# find /dir -printf '%u\n' | sort -t: -u

要包含文件组所有权,请在打印功能中添加%g选项。

# find /dir -printf '%u:%g\n' | sort -t: -u

下面的示例将在/var /目录中打印所有唯一的用户名拥有文件

查看用户名和组的下一个示例:

使用ls命令

我们还可以使用ls命令查看Linux中的文件和目录的所有者。

唯一的问题是如何处理递归所有权。

# ls -lh /dir 
# ls -lhR /dir