我需要检查root是否是特定目录中每个文件的所有者。我能做到
stat --format=%u /directory/name/here
获取目录本身的所有者,但不获取其中的文件。
我的另一个想法是
ls -lL | grep "^-\|^d" | cut -d ' ' -f 2
但如果权限中的最后一个字节是空格而不是'。'。
,那么这不起作用如果重要的话,这也是CentOS。
答案 0 :(得分:2)
您可以使用find
:
find /tmp -type f -printf '%u\n' | sort -u
lightdm
root
tiago
如果您需要数字形式的UID,例如使用stat
:
find /tmp -type f -printf '%U\n' | sort -u
0
1000
104
答案 1 :(得分:1)
你问两个不同的问题。
我需要检查root是否是特定目录中每个文件的所有者
要查找root所拥有非的任何文件,您可以执行以下操作:
find /yourdir ! -user root
如果它返回任何文件名,则root不是特定目录中每个文件的所有者。
如何获取Linux中目录中每个文件的所有者?
使用用户名:
打印目录中的每个文件find /yourdir -printf '%u %p\n'
如果最后一步是chown
不归root所有的文件,那么您只需执行chown -R root /yourdir
,因为在将chowing root的文件中没有任何害处根
答案 2 :(得分:0)
尝试
find /your/dir/ -type f -exec stat --format='%u %n' '{}' \;
我添加了%n
来显示文件名。
阅读find(1)了解有关find
的更多信息....您可能希望-max_depth 1
避免深入/your/dir/
答案 3 :(得分:0)
for F in /directory/*; do stat --format='%u' "$F"; done
并可选择添加dotglob
选项以匹配以...开头的文件。以及:
shopt -s dotglob
for F in /directory/*; do stat --format='%u' "$F"; done
* --format
相当于-c
。