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 parallel
o 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 sort
si 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 1
en lugar de*
² Se puede reemplazar parallel
con xargs -I{}
aquí como @hobbs y @don_crissti sugerido, simplemente más prolija.
³ basado en la respuesta de Gilles para usar date
las capacidades de lectura de archivos
Fri Oct 2 05:35:28 47592
)