Se o seu find
suportar -execdir
e -printf
:
find . -name a.txt -execdir [ ! -e b.txt ] \; -printf %h\n
procurará arquivos com o nome a.txt
, verifique se eles têm um arquivo de b.txt
de irmão e, se eles não exibirem o nome do diretório de conteúdo.
Sem -execdir
ou -printf
:
find . -name a.txt -exec sh -c '
for file do
dir=${file%/*}
[ -e "$dir/b.txt" ] || printf "%s\n" "$dir"
done' sh {} +
Também é mais eficiente porque não executa um comando por arquivo.