在linux中查找已删除用户的主目录

在linux中查找已删除用户的主目录,linux,bash,Linux,Bash,我正在尝试编写一个bash脚本来定位用户的主目录,这些用户的主目录已经被删除很久了,除了他们的配置文件(.bashrc、.bash_logout、.profile等…)什么都没有了 我试过了 find-类型d-空-打印 但它只会发现有活动用户的真正空目录。我需要那些没有用户的目录,而且我不关心隐藏的文件。我只关心文件夹中是否有实际的用户文件 谢谢。find有一个选项,在这种情况下可能会派上用场:-nouser。它与具有与/etc/passwd中指定的没有用户对应的(数字)用户id的文件相匹配。例

我正在尝试编写一个bash脚本来定位用户的主目录,这些用户的主目录已经被删除很久了,除了他们的配置文件(.bashrc、.bash_logout、.profile等…)什么都没有了

我试过了
find-类型d-空-打印

但它只会发现有活动用户的真正空目录。我需要那些没有用户的目录,而且我不关心隐藏的文件。我只关心文件夹中是否有实际的用户文件


谢谢。

find
有一个选项,在这种情况下可能会派上用场:
-nouser
。它与具有与
/etc/passwd
中指定的没有用户对应的(数字)用户id的文件相匹配。例如,以下命令将打印当前用户不拥有的
/home
下的所有目录:

find /home -mindepth 1 -maxdepth 1 -type d -nouser
编辑:如果您只想打印没有非隐藏文件的目录,可以按如下方式修改上述内容:

find /home -mindepth 1 -maxdepth 1 -type d -nouser -print0 |
    while IFS= read -r -d '' dir; do
        (($(ls "$dir" | wc -l) == 0)) && echo $dir
    done

find
有一个在这种情况下可能很有用的选项:
-nouser
。它与具有与
/etc/passwd
中指定的没有用户对应的(数字)用户id的文件相匹配。例如,以下命令将打印当前用户不拥有的
/home
下的所有目录:

find /home -mindepth 1 -maxdepth 1 -type d -nouser
编辑:如果您只想打印没有非隐藏文件的目录,可以按如下方式修改上述内容:

find /home -mindepth 1 -maxdepth 1 -type d -nouser -print0 |
    while IFS= read -r -d '' dir; do
        (($(ls "$dir" | wc -l) == 0)) && echo $dir
    done

您应该将主目录中的文件夹列表与
/etc/passwd
中的用户帐户进行比较。这应该更加可靠。您应该将主目录中的文件夹列表与
/etc/passwd
中的用户帐户进行比较。那应该更可靠。谢谢。如何将空文件(除.files外)与非空文件(常规文件和文件夹)区分开来?为什么要这样做?听起来像是简单的
-nouser
就能完成你想要的。不,不,不要在脚本中使用
ls
。您可以在纯
find
-查找非点文件和
-prune
中执行此操作,如果存在匹配项。不过,也许您必须在每个数据目录上运行第二次
find
。@tripleee这是一个有趣的想法,但是您能用一次
find
来完成吗?如果不是的话,
ls
解决方案也不会更好。不是在一个我可以测试的地方,而是模糊地认为GNU
find
-printf
-prune
的组合会起作用。非常感谢。如何将空文件(除.files外)与非空文件(常规文件和文件夹)区分开来?为什么要这样做?听起来像是简单的
-nouser
就能完成你想要的。不,不,不要在脚本中使用
ls
。您可以在纯
find
-查找非点文件和
-prune
中执行此操作,如果存在匹配项。不过,也许您必须在每个数据目录上运行第二次
find
。@tripleee这是一个有趣的想法,但是您能用一次
find
来完成吗?如果不是的话,
ls
解决方案也不会更好。不是在我可以测试的地方,而是模糊地认为GNU
find
-printf
-prune
的组合可以工作。