Estou tentando usar find para retornar todos os nomes de arquivos que tenham um diretório específico em seu caminho, mas não tenham outro diretório específico em nenhum lugar no caminho do arquivo. Algo como:
myRegex= <regex>
targetDir= <source directory>
find $targetDir -regex $myRegex -print
Eu sei que também posso fazer isso canalizando um comando find para outro, mas gostaria de saber como fazer isso com uma única expressão regular.
Por exemplo, eu quero todo arquivo que tenha o diretório "good" em seu caminho, mas não tenha o diretório "bad" em nenhum lugar em seu caminho, não importa a combinação. Alguns exemplos:
/good/file_I_want.txt #Captured
/good/bad/file_I_dont_want.txt #Not captured
/dir1/good/file_I_want.txt #Captured
/dir2/good/bad/file_I_dont_want.txt #Not captured
/dir1/good/dir2/file_I_want.txt #Captured
/dir1/good/dir2/bad/file_I_want.txt #Not captured
/bad/dir1/good/file_I_dont_want.txt #Not captured
Tenha em mente que alguns nomes de arquivos podem conter "bom" ou "ruim", mas eu só quero considerar nomes de diretórios.
/good/bad.txt #Captured
/bad/good.txt #Not captured
Minha pesquisa sugere que eu deveria usar um Negative Lookahead e um Negative Lookbehind. No entanto, nada que tentei funcionou até agora. Alguma ajuda seria apreciada. Obrigado.