Sei sulla buona strada (per una soluzione più semplice, eseguendo solo 2 o 3 comandi, vedi sotto). Dovresti usare *
invece di ./
sbarazzarti della directory corrente¹ e questo semplifica in qualche modo il taglio dei millisecondi, quindi inserisci semplicemente il risultato in GNU parallel
o xargs
²:
find * -type d | cut -c 1-10 | parallel date --date=@{} +%c
ottenere
Sat 12 Sep 2015 08:35:11 CEST
Sun 13 Sep 2015 10:50:11 CEST
Mon 14 Sep 2015 08:35:21 CEST
e per aggiungere l'offset dei secondi prima di quello indicato dall'esempio:
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)'
ottenere:
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
Tuttavia è più semplice fare³:
find * -type d -printf "@%.10f\n" | date -f - +'%s %c'
che ti fornisce lo stesso output richiesto ancora una volta.
Lo svantaggio dell'uso *
è che sei limitato dalla tua linea di comando per la sua espansione, il vantaggio tuttavia è che ottieni le tue directory ordinate per valore di data / ora. Se il numero di directory è un problema utilizzare -mindepth 1
, ma si perde l'ordine:
find ./ -mindepth 1 -type d -printf "@%.10f\n" | date -f - +'%s %c'
e inserire sort
se necessario:
find ./ -mindepth 1 -type d -printf "@%.10f\n" | sort | date -f - +'%s %c'
¹ Questo presuppone che non ci siano sottodirectory nidificate, come sembra essere il tuo esempio. Puoi anche usare ./ -mindepth 1
invece di*
² Puoi sostituirlo parallel
con xargs -I{}
qui come suggerito da @hobbs e @don_crissti, è solo più dettagliato.
³ basato sulla risposta di Gilles per utilizzare date
le capacità di lettura dei file
Fri Oct 2 05:35:28 47592
)