Bagaimana saya bisa menggunakan lsdi linux untuk mendapatkan daftar tanggal dan ukuran nama file saja. Saya tidak perlu melihat info lain seperti pemilik atau izin. Apakah ini mungkin?
Bagaimana saya bisa menggunakan lsdi linux untuk mendapatkan daftar tanggal dan ukuran nama file saja. Saya tidak perlu melihat info lain seperti pemilik atau izin. Apakah ini mungkin?
Jawaban:
Mengapa tidak menggunakan statbukan ls?
stat -c "%y %s %n" *
find . -type f -print0 | xargs -0 stat -c "%y %s %n"
stat, Anda dapat menambahkan lebar informasi ke format string seperti fungsi printf C, misalnya "%y %8s %n", itu tidak didokumentasikan, tetapi tampaknya karya (coreutils 8.17, Fedora 18)
lssaya dapat mengeluarkannya dengan seribu pemisah char. Bagaimana cara kerjanya stat?
ls. Bagaimana dengan warna ??
Anda bisa mendapatkan banyak kontrol tentang bagaimana Anda membuat daftar file dengan findutilitas. lstidak benar-benar membiarkan Anda menentukan kolom yang Anda inginkan.
Sebagai contoh:
$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601 4096 .
20111007.0601 2 b
20111001.1322 4096 a
Argumen untuk printftindakan adalah detail dalam halaman manual. Anda dapat memilih informasi waktu yang berbeda, ukuran apa yang Anda inginkan (ukuran file atau blok disk yang digunakan), dll. Anda juga dapat membuat ini aman untuk nama file yang tidak biasa jika diperlukan pemrosesan lebih lanjut.
%C+(output "2016-08-29 + 10: 57: 56.9201257840") dan %Cc(output "Mo 29 Agt 2016 10:57:56 CEST")
Anda selalu dapat menggunakan utilitas lain seperti awkmemformat output ls1 :
/bin/ls -ls | awk '{print $7,$8,$9}'
1.Ya, secara umum, Anda seharusnya tidak mem-parsing output ls tetapi dalam kasus ini pertanyaannya secara spesifik ...
lsalias (katakanlah alias ls='ls -i'). Anda benar-benar harus sangat berhati-hati jika ingin melakukan parsing output ls.
ls, tetapi itulah yang diinginkan OP ...
/bin/lsakan menghindari masalah alias.)
lsyang kami berdua sepakati tidak akan memenuhi persyaratan spasi putih. The /bin/lssaran adalah satu yang baik.
-huntuk membuatnya dapat dibaca oleh manusia. Secara khusus saya gunakan: ls -lah | awk '{print $5,$6,$7,$8}'yang menghasilkan: 4.0K Jan 24 18:17. Memang, solusi asli tidak mengatakan apa-apa tentang awk, tetapi di linux kita harus mengasumsikan output dari suatu proses akan selalu menjadi input untuk proses lain, kan? ;)
Anda juga dapat menggunakan perintah 'date'. Sangat mudah digunakan:
date -r [nama file]
date -r foo*.txt->date: extra operand "foo2.txt"
di mana ruang didefinisikan sebagai pemisah dan f6 berarti bidang 6
ls -lt | cut -d" " -f6-
Anda dapat menyalurkan dua perintah
ls -l|cut -d" " -f5
lsbagus karena memiliki penyortiran yang sangat cepat berdasarkan datetime, tetapi formatnya sulit untuk ditangani. Saya sarankan menggunakan token pada --waktu-gaya seperti di--time-style='+&%Y%m%d+%H%M%S.%N'mana token adalah '&', menggunakan itu sebagai referensi Anda dapat mengurai output dengan lebih lanjutsedsehingga Anda juga dapat mundur karena tepat sebelum token adalah ukuran! Jika seseorang ingin memposting itu sebagai jawaban yang lengkap, silakan saja, saya juga tertidur sekarang :)