![查找不包含特定子目录的目录名称](https://linux22.com/image/159560/%E6%9F%A5%E6%89%BE%E4%B8%8D%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%E5%AD%90%E7%9B%AE%E5%BD%95%E7%9A%84%E7%9B%AE%E5%BD%95%E5%90%8D%E7%A7%B0.png)
我有超过 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
打印。