如何在Linux目录中获取所有文件所有者的列表
本教程旨在在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