Sepertinya saya tidak bisa menemukan cara untuk mencetak tanggal file. Sejauh ini saya dapat mencetak semua file dalam suatu direktori, tetapi saya perlu mencetak tanggalnya.
Saya tahu saya harus melampirkan format tanggal dengan gema entri, tetapi semua saya tidak dapat menemukan format yang benar.
echo "Please type in the directory you want all the files to be listed"
read directory
for entry in "$directory"/*
do
echo "$entry"
done
Jawaban:
Anda bisa menggunakan
stat
perintahInfo lebih lanjut
sumber
for entry in "$directory"/* do stat -c%y "$entry" done
Tidak bekerja Mencetak stat: operan yang hilang di terminalstat
?stat -f "%m%t%Sm %N" filename
(lihatman stat
contoh untuk lebih jelasnya)stat
perintah memiliki sintaks yang berbeda. Kasus saya untuk FreeBSD:stat -f %Sm -t %F" "%R filename
.Bukankah perintah 'kencan' lebih sederhana? Tidak perlu awk, stat, dll.
Juga, pertimbangkan untuk melihat halaman manual untuk format tanggal; misalnya dengan format tanggal dan waktu yang sama:
sumber
date
tidak memiliki ini. Ini-r
hanya digunakan untuk memberikan cap waktu untuk memformat. Anda harus menggunakan tanggal GNU untuk mendapatkan fungsi ini.stat -f "%Sm" -t "%m%d%H%M%y" "${1}"
date [-r seconds | filename]
sepenuhnya didokumentasikan dalamman
halaman, dan berfungsi seperti yang diharapkan.Pada OS X, saya ingin teman kencan saya berada dalam format
YYYY-MM-DD HH:MM
dalam output untuk file.Jadi untuk menentukan file yang akan saya gunakan:
Jika saya ingin menjalankannya pada berbagai file, saya dapat melakukan sesuatu seperti ini:
Contoh ini akan mencetak terakhir kali saya menjalankan
sudo periodic daily weekly monthly
perintah karena referensi file log.Untuk menambahkan nama file di bawah setiap tanggal, saya akan menjalankan yang berikut:
Outputnya adalah sebagai berikut:
Sayangnya saya tidak yakin bagaimana mencegah jeda baris dan menjaga nama file ditambahkan pada akhir tanggal tanpa menambahkan lebih banyak baris ke skrip.
PS - Saya gunakan
#!/usr/bin/env bash
karena saya adalah pengguna Python pada siang hari, dan memiliki berbagai versi yangbash
diinstal pada sistem saya, bukan#!/bin/bash
sumber
echo -e "$(stat -f %Sm -t %Y%m%d_%H%M%S $AFile)\t$AFile."
. Dalam kasus Anda itu bisa jadi:echo -e "$(stat -f "%Sm" -t "%Y-%m-%d %H:%M" "$i")\t$i."
`Yang terbaik
sumber
Menambahkan ke jawaban @StevePenny, Anda mungkin ingin memotong bagian yang tidak bisa dibaca manusia:
sumber
Saya ingin mendapatkan tanggal modifikasi file dalam
YYYYMMDDHHMMSS
format. Inilah cara saya melakukannya:Penjelasan. Ini kombinasi dari perintah-perintah ini:
sumber
DIedit: ternyata saya lupa tanda kutip yang diperlukan untuk
$entry
mencetak dengan benar dan tidak memberikan kesalahan "tidak ada file atau direktori". Terima kasih banyak telah membantu saya!Ini kode terakhir saya:
Cetakan seperti ini:
sumber
Untuk jeda baris saya mengedit kode Anda untuk mendapatkan sesuatu tanpa jeda baris.
sumber
Jika nama file tidak memiliki spasi:
Ini mencetak sebagai format berikut:
Jika nama file memiliki spasi (Anda dapat menggunakan perintah berikut untuk nama file tanpa spasi juga, hanya saja terlihat rumit / jelek dari yang sebelumnya):
sumber
<dir>
yang tidak ada .... kodenya baik-baik saja.Kamu bisa memakai:
Ini akan menampilkan tanggal dalam 2 digit.
Jika antara 1 hingga 9 itu menambahkan "0" awalan untuk itu dan mengkonversi ke 01 - 09.
Semoga ini memenuhi harapan.
sumber