Se você pode usar o Zsh, isso parece fazer o que você deseja:
$ mkdir -p x/y; touch x/y/a x/b; sleep .1; touch x/y/a; sleep .1; touch x/b
$ find -depth -type d -execdir zsh -c 'touch "$1" -r "$1"/*(om[1])' zsh {} \;
Teste a saída com o GNU find, ./x/b
foi o mais novo, seu timestamp é copiado para ./x
e .
.
$ find -printf "%TT %p\n" | sort -n
15:16:24.0182222830 ./x/y
15:16:24.0182222830 ./x/y/a
15:16:24.1222150510 .
15:16:24.1222150510 ./x
15:16:24.1222150510 ./x/b
Encontrar o arquivo mais novo por timestamp é um pouco complicado em geral, se houver nomes de arquivos com espaço em branco / novas linhas ou algo parecido. (Veja BashFAQ 099 .) Zsh facilita bastante, no entanto, o truque acima é de É possível referenciar o arquivo modificado mais recentemente em um argumento de linha de comando?
-depth
informa find
para manipular subdiretórios antes de seus pais, para que o borbulhamento realmente funcione.
Isso não ignora totalmente os registros de data e hora dos diretórios, pois eles devem ser contados quando os registros de data e hora se elevarem. Um diretório contendo arquivos receberá seu registro de data e hora dos arquivos, mas um diretório vazio manterá seu registro de data e hora original, e esse registro de tempo será borbulhado. Não tenho certeza se vale a pena trabalhar com isso.