Você pode usar -exec test ...
para verificar a existência do arquivo como bom em um diretório, por exemplo,
find /path/to/search -type d \! -exec test -e '{}/good' \; -print
Eu já vi perguntas semelhantes a isso, mas nada que eu possa encontrar está relacionado diretamente aos arquivos.
Existe alguma maneira de me fornecer uma lista de diretórios que não contenham um arquivo específico?
Exemplo:
/dir1/good
/dir1/stuff
/dir2/junk
/dir2/morejunk
/dir3/good
/dir4/junk
Eu gostaria de executar um comando find onde eu retornaria apenas os nomes de diretório que não continham o arquivo 'good' (dir2 e dir4). Existe alguma maneira de encontrar ou algum combo para fazer isso? A única maneira de fazer isso agora é executar um find para o arquivo 'good', salvar essa saída e usar alguns comandos awk, sort e comm -3 para obter um diff do que eu preciso.
Existe alguma maneira mais fácil de fazer isso?
Você pode fazer isso facilmente com o find e o paralelo GNU :
$ file=foo && find . -type d | parallel -j+0 "[ -f {}/$file ] || echo $file not in {}"
Esse comando funciona alimentando todos os diretórios sob o diretório atual em paralelo. Em paralelo, lança trabalhos paralelos para verificar o arquivo foo em cada diretório e imprime uma mensagem se o arquivo não existir no diretório.
Tags find