Saya hanya ingin menyortir file dengan memperbarui tanggal termasuk sub-direktori.
Saya tahu ls -lrtR | grep ^-
. tapi sepertinya tidak mengurutkan berdasarkan tanggal pembaruan.
Dan saya perlu menyimpan daftar ini ke dalam file. Apa itu mungkin?
Apr 01 2010 InsideDoosanServiceImpl.class // in A directory
Apr 08 2010 MainController.class // in B directory
Apr 07 2010 RecommendController.class // in B directory
Apr 01 2010 MainDao.class // in B directory
Maksud saya seluruh daftar tidak dipesan berdasarkan tanggal, tetapi pertama kali dipesan berdasarkan folder, dan dipesan berdasarkan tanggal.
Saya ingin daftar yang pertama kali dipesan berdasarkan tanggal termasuk semua sub-direktori.
ls -lrt
.xargs
melakukan beberapa panggilanls
, karena file-file tersebut hanya diurutkan dengan benar dalam setiapls
permintaan tetapi tidak memiliki urutan global yang koheren dalam output.Dengan ls, -R akan menampilkan kembali direktori dan -t akan mengurutkan berdasarkan modifikasi. Namun, ia menelusuri direktori secara rekursif dan berlaku -t untuk setiap direktori. Itu tidak mengumpulkan semua file dari semua direktori dan kemudian mengurutkan. (Sejauh yang saya mengerti, yang terakhir adalah apa yang Anda inginkan)
Dengan gnu find (1) Anda dapat menentukan format output untuk memasukkan jumlah detik sejak zaman dan nama file, maka Anda dapat mem-pipe ini untuk mengurutkan (1).
sumber
GNU find
memang membantu. Tapi OP bekerja padaAIX
mesin jadiGNU find
tidak tersedia baginya.ls
tidak dapat dibuat untuk mengakumulasi file sebelum disortir.ls
adalah begitu cepat dibandingkan denganfind
.ls
danfind
membaca data yang sama, jadi saya tidak bisa membayangkan alasan mengapa ls harus jauh lebih cepat daripada menemukan. Pada sistem saya temukan adalah 5 kali lebih cepat (mencari sekitar setengah juta file)find . -type f -printf "%T@ %Tc %p\n" | sort -n > out.txt
menghasilkan entri output seperti1427913836.2330520210 wed 1 apr 2015 20:43:56 ./subdir/file.txt
.