【问题标题】:locate home directories of deleted users in linux在linux中找到已删除用户的主目录
【发布时间】:2016-09-21 15:12:53
【问题描述】:

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

我试过了 find . -type d -empty -print

但它只能找到真正的空目录,其中包含活跃用户。我需要那些没有用户的目录,而且我不关心隐藏文件。我只关心文件夹中是否有实际的用户文件。

谢谢。

【问题讨论】:

  • 您应该将主目录中的文件夹列表与/etc/passwd 中的用户帐户进行比较。那应该更可靠。

标签: linux bash


【解决方案1】:

find 有一个在这种情况下可能会派上用场的选项:-nouser。它与具有(数字)用户 ID 的文件匹配,该用户 ID 对应于 /etc/passwd 中指定的任何用户。例如,以下命令将打印/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

【讨论】:

  • 非常感谢。如何分隔空(.files 除外)与非空(常规文件和文件夹)
  • 您为什么要这样做?听起来很简单,-nouser 就能完成你想要的。
  • 不不不,不要在脚本中使用ls。您可以在纯 find 中执行此操作 - 查找非点文件和 -prune 是否有匹配项。不过,也许您必须在每个目录上运行第二个 find
  • @tripleee 这是一个有趣的想法,但你能用一个find 做到这一点吗?如果没有,那ls 解决方案也好不到哪里去。
  • 不在我可以测试的地方,但模糊地认为 GNU find-printf-prune 的组合会起作用。
猜你喜欢
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
相关资源
最近更新 更多