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

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

我知道我可以这样做来获取 /vz/root 内的目录列表:

find /vz/root/ -type d -maxdepth 1 -exec echo {} \;

但是我该如何编辑它以仅列出不包含名为“php-5.3.3”的子目录的目录?因此,如果有 3 个目录 /vz/root/101、/vz/root/102 和 /vz/root/103,其中两个目录包含 php-5.3.3 子目录,则它只会回显没有该子目录的路径。

答案1

尝试

find /vz/root/ -maxdepth 1 -type d  \! -exec test -d '{}/php-5.3.3' \; -print | grep -v php-5.3.3 | uniq -w 12 | grep -v '^/vz/root/$'

答案2

如果要排除包含 php-5.3.3 的路径,您可以简单地使用grep -v

find /root/ -maxdepth 1 -type d -exec echo {} \; | grep -v php-5.3.3

答案3

您可以使用作为不是操作员。

find /vz/root/ -type d -maxdepth 1 ! -ipath '*php-5.3.3*' -exec echo {} \;

这将列出 /vz/root/ 下的所有目录,除了路径名中带有 php-5.3.3 的目录。

答案4

已接受答案的简化版本:

find /vz/root/ -type d -maxdepth 1 -exec test ! -d "{}/php-5.3.3" \; -print

相关内容