Tente
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/$'
Eu sei que posso fazer isso para obter uma lista de diretórios dentro de / vz / root:
find /vz/root/ -type d -maxdepth 1 -exec echo {} \;
Mas como posso editar isso para listar apenas os diretórios que não contêm um subdiretório chamado "php-5.3.3"? Portanto, se houver três diretórios / vz / root / 101, / vz / root / 102 e / vz / root / 103, e dois deles contiverem o subdiretório php-5.3.3, ele apenas ecoará o caminho daquele que não não tem isso.
Se você quiser excluir os caminhos que contêm o php-5.3.3, você pode simplesmente usar grep -v
find /root/ -maxdepth 1 -type d -exec echo {} \; | grep -v php-5.3.3
Você pode usar o ! como operador não .
find /vz/root/ -type d -maxdepth 1 ! -ipath '*php-5.3.3*' -exec echo {} \;
Isso listaria todos os diretórios sob / vz / root / exceto aqueles que possuem o php-5.3.3 em seu nome de caminho.
É possível pegar algo que quase resolva com o find e use find2perl
para criar um programa em Perl que faça a mesma coisa. Em seguida, modifique o script Perl para fazer algo avançado. Eu não vou enumerar porque você pediu uma variação no comando find
e isso está fora do escopo da sua solicitação. Além disso, você teria que conhecer algum Perl e eu não quero começar um flamewar.
Versão simplificada da resposta aceita:
find /vz/root/ -type d -maxdepth 1 -exec test ! -d "{}/php-5.3.3" \; -print
Tags linux