Anda berada di jalur yang benar (untuk solusi yang lebih sederhana, hanya menjalankan 2 atau 3 perintah, lihat di bawah). Anda harus menggunakan *
alih-alih ./
untuk menyingkirkan direktori saat ini somewhat dan ini menyederhanakan pemotongan milidetik, kemudian cukup pipirkan hasilnya ke GNU parallel
atau xargs
²:
find * -type d | cut -c 1-10 | parallel date --date=@{} +%c
mendapatkan
Sat 12 Sep 2015 08:35:11 CEST
Sun 13 Sep 2015 10:50:11 CEST
Mon 14 Sep 2015 08:35:21 CEST
dan menambahkan detik offset sebelum itu sebagai contoh Anda menunjukkan:
find * -type d | cut -c 1-10 | parallel 'echo "{} " $(date --date=@{} +%c)'
atau:
find * -type d | cut -c 1-10 | xargs -I{} bash -c 'echo "{} " $(date --date=@{} +%c)'
mendapatkan:
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
Namun lebih mudah dilakukan³:
find * -type d -printf "@%.10f\n" | date -f - +'%s %c'
yang memberi Anda hasil yang diminta sekali lagi.
Kerugian menggunakan *
adalah bahwa Anda dibatasi oleh perintah Anda untuk ekspansi, namun keuntungannya adalah Anda mendapatkan direktori Anda diurutkan berdasarkan nilai timestamp. Jika jumlah direktori bermasalah digunakan -mindepth 1
, tetapi kehilangan urutan:
find ./ -mindepth 1 -type d -printf "@%.10f\n" | date -f - +'%s %c'
dan masukkan sort
jika perlu:
find ./ -mindepth 1 -type d -printf "@%.10f\n" | sort | date -f - +'%s %c'
¹ Ini mengasumsikan tidak ada subdirektori bertingkat, seperti contoh dari contoh Anda. Anda juga dapat menggunakan ./ -mindepth 1
alih-alih*
² Anda dapat menggantinya parallel
dengan di xargs -I{}
sini seperti yang disarankan @hobbs dan @don_crissti, itu hanya lebih bertele-tele.
³ berdasarkan jawaban Gilles untuk menggunakan date
kemampuan membaca file
Fri Oct 2 05:35:28 47592
)