我知道我可以这样做来获取 /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