在linux中查找已删除用户的主目录
我正在尝试编写一个bash脚本来定位用户的主目录,这些用户的主目录已经被删除很久了,除了他们的配置文件(.bashrc、.bash_logout、.profile等…)什么都没有了 我试过了在linux中查找已删除用户的主目录,linux,bash,Linux,Bash,我正在尝试编写一个bash脚本来定位用户的主目录,这些用户的主目录已经被删除很久了,除了他们的配置文件(.bashrc、.bash_logout、.profile等…)什么都没有了 我试过了 find-类型d-空-打印 但它只会发现有活动用户的真正空目录。我需要那些没有用户的目录,而且我不关心隐藏的文件。我只关心文件夹中是否有实际的用户文件 谢谢。find有一个选项,在这种情况下可能会派上用场:-nouser。它与具有与/etc/passwd中指定的没有用户对应的(数字)用户id的文件相匹配。例
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
解决方案也不会更好。不是在一个我可以测试的地方,而是模糊地认为GNUfind
与-printf
和-prune
的组合会起作用。非常感谢。如何将空文件(除.files外)与非空文件(常规文件和文件夹)区分开来?为什么要这样做?听起来像是简单的-nouser
就能完成你想要的。不,不,不要在脚本中使用ls
。您可以在纯find
-查找非点文件和-prune
中执行此操作,如果存在匹配项。不过,也许您必须在每个数据目录上运行第二次find
。@tripleee这是一个有趣的想法,但是您能用一次find
来完成吗?如果不是的话,ls
解决方案也不会更好。不是在我可以测试的地方,而是模糊地认为GNUfind
与-printf
和-prune
的组合可以工作。