查找不属于特定用户的文件

Posted

技术标签:

【中文标题】查找不属于特定用户的文件【英文标题】:Looking for files NOT owned by a specific user 【发布时间】:2011-08-21 02:43:22 【问题描述】:

我希望递归地查看目录以,但我不知道如何编写。

【问题讨论】:

【参考方案1】:

寻找不属于某人的文件

其他人已在正文中回答了问题“不属于特定用户”。这是一个回答了名义问题但尚未提供的问题:

$ find / -nouser

你可以这样使用它:

$ sudo find /var/www -nouser -exec chown root:apache  \;

还有一个相关的:

$ find / -nogroup

【讨论】:

我会给你投票支持技术性,但如果他们的意思是你所解释的,人们通常会说“不归任何人所有”。 @Shibumi - 是的,听起来很适合那些分裂的头发。我面临的问题是,我需要找到实际上不属于任何用户的文件。它在 Web 服务器刷新和迁移后浮出水面。一些用户/组 id 发生了变化,所以我需要编写一个 chown 脚本。【参考方案2】:

使用z-shell(zsh)可以使用

ls -laR *(^U)

ls -la **/*(^U)

递归搜索所有不属于您的文件。

【讨论】:

确实,上面的命令不会列出点文件,即使带有-a 标志,因为通配符扩展。要捕获点文件,请使用 zsh dotglob 选项:setopt dotglob。在一行中:(setopt dotglob; ls **/*(^U) )。括号将在子shell中运行,这样您就不必在完成后运行setopt nodotglob @Zorawar 您也可以在括号中添加Dls **/*(D^U) @MarcCornellà 你是对的;我不知道。谢谢你。如果它是一次性使用,这比必须使用 setopt 更好。【参考方案3】:

find(1) 实用程序具有可以使用“!”取反(“反转”)的初选。操作员。然而,在提示符处必须用反斜杠转义否定,因为它是一个 shell 元字符。结果:

find . \! -user foo -print

【讨论】:

转义 ! 似乎是可选的 通过管道输出到xargs -I -P3 -- $cmdhere 可以让 $cmdhere 对每个文件进行并行操作。 cmdhere ::= 标准 unix utils;标准 unix utils ::= chmod, chown, stat, ls, ... @sorin 你的意思是find . ... 还是管道到xargs 是第一种还是第二种方式? 发现有 -exec 标志 -> find . ! -user foo -exec chown <owner>:<group> \; @sorin:如果 Bash 历史记录处于活动状态 (set -H),则感叹号必须转义,通常默认情况下处于启用状态。【参考方案4】:

你可以用这个:

find <dir> ! -user <username> 

【讨论】:

投反对票,因为它没有向接受的答案添加任何内容,并且它掩盖了其他可能的答案(例如下面的 zsh glob 模式)。【参考方案5】:

-user 按用户或用户 ID 查找,! 反转谓词。所以,! -user ...

【讨论】:

投反对票,因为它没有向接受的答案添加任何内容,并且它掩盖了其他可能的答案(例如下面的 zsh glob 模式)。

以上是关于查找不属于特定用户的文件的主要内容,如果未能解决你的问题,请参考以下文章

在Linux中按所有者查找文件

linux查找并输出特定行和它的前一行且在后面再输出一个空白行的命令

键入时查找文件的大小

centos系统怎么查看软件安装路径

查找文件并更改权限,忽略目录

文件查找和压缩