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?
linux
command-line
files
ls
Kelingking
sumber
sumber
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 :)Jawaban:
Mengapa tidak menggunakan
stat
bukanls
?sumber
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 kerjanyastat
?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:
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.sumber
%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 outputls
1 :1.Ya, secara umum, Anda seharusnya tidak mem-parsing output ls tetapi dalam kasus ini pertanyaannya secara spesifik ...
sumber
ls
alias (katakanlahalias 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:
sumber
date -r foo*.txt
->date: extra operand "foo2.txt"
Jika Anda ingin menggunakan ls, tetapi mempertahankan ukuran yang tepat, Anda dapat menggunakan:
sumber
di mana ruang didefinisikan sebagai pemisah dan f6 berarti bidang 6
sumber
Anda dapat menyalurkan dua perintah
sumber
ls -s1 mengembalikan ukuran file dan nama hanya di AIX, tidak yakin tentang Linux
sumber