查找不包含特定子目录的目录名称

查找不包含特定子目录的目录名称

我有超过 200 个 WordPress 网站/home2/blogname/public_html/,我需要找到哪些博客在插件目录下没有一个名为“better-wp-security”的子目录,例如:/home2/blogname/public_html/wp-content/plugins/

原因是要知道哪些博客没有安装“better-wp-security”插件

具有该目录的博客将显示如下内容:

/home2/blogname/public_html/wp-content/plugins/better-wp-security/

...所以我需要列出/home2/blogname没有该目录的博客(/)的主要目录。

我怎样才能做到这一点?。

答案1

您可以使用 来完成此操作find,但也可以使用 shell 循环:

for dir in /home2/blogname/*
do
  [ -d "$dir"/public_html/wp-content/plugins/better-wp-security ] || printf '%s is missing a public_html/wp-content/plugins/better-wp-security directory\n' "$dir"
done

使用 GNU 查找:

find /home2/blogname -mindepth 1 -maxdepth 1 -exec sh -c \
  'test ! -d "$1"/public_html/wp-content/plugins/better-wp-security' findsh {} \; -print

这将对 /home2/blogname 下的每个条目(除 /home2/blogname 本身外,给定 )运行一个小的 shell 片段,-mindepth 1而不对 /home2/blogname/* 的任何子目录(给定 )运行-maxdepth 1。该片段检查给定的目录是否具有列出的子目录结构;如果没有,则通过并test打印。

相关内容