find "$DIR" -type d | while read d; do echo "$d,$(ls -t "$d" | sed -n '1h; $ { G; s/\n/,/g; p }')"; done
Ou, em formato mais legível e usando uma variável extra para demonstração:
find "$DIR" -type d |
while read d;
do
files=$(ls -t "$d" | sed -n '1h; $ { G; s/\n/,/g; p }')
printf '%s,%s\n' "$d" "$files";
done
Isso localiza todos os subdiretórios de $DIR usando o comando find . Para cada um encontrado, usa ls -tr para obter uma lista de arquivos nesse diretório classificados por data, o mais novo primeiro.
Canalize a saída de ls -tr para sed unindo a primeira e a última linha com uma vírgula: A opção -n suprime a saída padrão, 1h salva a primeira linha (nome do arquivo mais novo) na retenção espaço , e na última linha do arquivo (selecionada por $ ) acrescenta o espaço de espera (nome do arquivo mais novo) com H ao espaço padrão (delimitado por uma nova linha) e altera essa nova linha para um vírgula.
O script então printf s o nome do subdiretório seguido por uma vírgula, seguido pelos arquivos que saíram de sed .
Isso não faz distinção entre diretórios e arquivos para a seleção mais antiga / mais nova, então se você não quiser diretórios lá, você precisará filtrar a saída de ls -t para remover os diretórios.