Bagaimana saya bisa menggunakan ls
di 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 ls
di 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 stat
bukan 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)
ls
saya 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 find
utilitas. ls
tidak 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 printf
tindakan 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 awk
memformat output ls
1 :
/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 ...
ls
alias (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/ls
akan menghindari masalah alias.)
ls
yang kami berdua sepakati tidak akan memenuhi persyaratan spasi putih. The /bin/ls
saran adalah satu yang baik.
-h
untuk 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
ls
bagus 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 lanjutsed
sehingga 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 :)