Solução ligeiramente demorada, mas funcional, que deve funcionar nos casos em que -execdir
não está disponível:
$ tree
.
├── dir_one
│ ├── password.old
│ └── webvirtual
└── dir_two
└── password.old
$ find . -iname "*password.old" -exec dirname "{}" \; 2>/dev/null | while IFS= read -r directory; do
> [ -e "$directory"/webvirtual ] && continue || echo "$directory"
> done
./dir_two
Assim, tudo o que você precisa fazer agora é adicionar > OLD.txt
no final da instrução done
para redirecionar a saída para o arquivo
Caso o comando dirname
não esteja disponível, você pode usar o seguinte script com o diretório como argumento.
#!/bin/sh
find "$1" -type f -iname "*password.old" -printf "%h\n" |
while IFS= read -r directory;
do
[ -e "$directory"/webvirtual ] && continue || echo "$directory"
done
Por exemplo:
$ ./find_missing_webvirtual.sh ./TESTDIR/
./TESTDIR/dir_two