Está en el camino correcto (para una solución más simple, ejecutando solo 2 o 3 comandos, consulte a continuación). Debería usar en *lugar de ./deshacerse del directorio actual¹ y esto simplifica un poco el corte de los milisegundos, luego simplemente canalice el resultado en GNU parallelo xargs²:
find * -type d | cut -c 1-10 | parallel date --date=@{} +%c
Llegar
Sat 12 Sep 2015 08:35:11 CEST
Sun 13 Sep 2015 10:50:11 CEST
Mon 14 Sep 2015 08:35:21 CEST
y para agregar los segundos de desplazamiento antes de eso, como indica su ejemplo:
find * -type d | cut -c 1-10 | parallel 'echo "{} " $(date --date=@{} +%c)'
o:
find * -type d | cut -c 1-10 | xargs -I{} bash -c 'echo "{} " $(date --date=@{} +%c)'
Llegar:
1442039711 Sat 12 Sep 2015 08:35:11 CEST
1442134211 Sun 13 Sep 2015 10:50:11 CEST
1442212521 Mon 14 Sep 2015 08:35:21 CEST
Sin embargo, es más simple hacer³:
find * -type d -printf "@%.10f\n" | date -f - +'%s %c'
lo que te da el mismo resultado solicitado una vez más.
La desventaja de usar *es que está limitado por su línea de comandos para su expansión, sin embargo, la ventaja es que ordena sus directorios por valor de marca de tiempo. Si el número de directorios es un problema -mindepth 1, use , pero pierda el orden:
find ./ -mindepth 1 -type d -printf "@%.10f\n" | date -f - +'%s %c'
e inserte sortsi es necesario:
find ./ -mindepth 1 -type d -printf "@%.10f\n" | sort | date -f - +'%s %c'
¹ Esto supone que no hay subdirectorios anidados, como parece ser el caso de su ejemplo. También se puede utilizar ./ -mindepth 1en lugar de*
² Se puede reemplazar parallelcon xargs -I{}aquí como @hobbs y @don_crissti sugerido, simplemente más prolija.
³ basado en la respuesta de Gilles para usar datelas capacidades de lectura de archivos
Fri Oct 2 05:35:28 47592)