Yanıtlar:
Bu tam olarak ne demek istediğin "açıl" dır, fakat genel olarak evet Normal olarak kaydedilmiş üç zaman damgası vardır:
mtime
- dosya içerikleri değiştiğinde güncellenir. Bu, çoğu durumda "varsayılan" dosya süresidir.ctime
- dosya veya meta verileri (sahip, izinler) değiştiğinde güncelleniratime
- dosya okunduğunda güncellenirGenelde görmek istediğin atime
, bir dosya. Bunu ile stat
veya ile alabilirsiniz ls
. Bunu kullanmayı ls -lu
tercih ls -l --time=atime
etmeme rağmen ( kullanmayı tercih ediyorum) (ki neredeyse tüm modern Linux dağıtımlarında desteklenmeli) çünkü sık kullanmıyorum ve yaptığım zaman daha iyi hatırlayabiliyorum. Ve zamana göre sıralamak için -t
bayrak ls'ye ekleyin . Al işte ozaman, buyur.
Yine de büyük bir uyarı var. Bir dosyayı her okunuşunda atime güncelleme, genellikle gereksiz IO'ya neden olur ve her şeyi yavaşlatır. Bu nedenle, çoğu Linux dağıtımları artık varsayılan olarak, sadece bir sınır geçtikten sonra (normalde günde bir kez) veya dosya önceki okumadan bu yana değiştirilmişse, noatime
atimesleri öldüren temelde atimes'i öldüren dosya sistemi takma seçeneğinde varsayılandır relatime
. mount
Komutu çalıştırarak bu seçeneklerin etkin olup olmadığını görebilirsiniz .
Ayrıca, erişim zamanlarının dosya adına göre değil de inode olduğuna dikkat edin, bu nedenle hardlinksiniz varsa, birinden okumak aynı dosyaya başvuran tüm isimleri güncelleyecektir.
Ve c'nin "yaratılış" olmadığını unutmayın; Yaratılış, tuhaf görünen ama aslında mantıklı geldiği için Unix / Linux dosya sistemleri tarafından izlenmez, çünkü dosya sisteminin orijinal olup olmadığını bilme imkanı yoktur - belki de dosya kırk yıl önce oluşturulmuş ve buraya kopyalanmıştır. Ve aslında birçok dosya editörü, asılları kopyalayarak çalışır. Bu bilgilere ihtiyacınız olursa, bunun gibi bir sürüm kontrol sistemi kullanmak en iyisidir git
.
mount
.
ls
süreyi varsayılan olarak makul bir hassasiyetle kısaltır. Zamanı tam olarak görmek için kişi kullanabilirsiniz --full-time
.
ls -ltu
Erişim zamanına göre gösterilen ve sıralanan tüm dosyaları listeler.
Kimden man ls
:
-u with -lt: sort by, and show, access time with -l: show access
time and sort by name otherwise: sort by access time
Girişiniz insan tüketimi için ls
ise, tarih sıralama bayraklarından biriyle kullanın ( -tu
erişim (okuma) zamanı, yalnızca -t
değişiklik (yazma) zamanı veya -tc
inode değiştirme zamanı). Daha fazla bilgi için mattdm'in cevabına bakınız (özellikle ilgili ihmal-a
ve tanımı -c
).
Eğer bu program tüketimi içinse , çıktısının ayrıştırılması ls
problemlidir . Eğer kabuğunuz zsh ise, ls
yine de ihtiyacınız yok : zsh, access ( *(Oa)
), inode change ( *(Oc)
) veya modifikasyon ( *(Om)
) süresini artırarak eşleşmeleri sıralamak için globbing elemelerine sahiptir . Küçük harf, o
yaşı artırarak sıralar.
act_on_files_by_date *(Om)
Aksi takdirde, dosya adlarının yeni satır veya yazdırılamayan karakterler içermediğini biliyorsanız (geçerli yerel ayarda),
ls -t | while read -r name; do act_on_one_file "$name"; done
ls -t | xargs -I {} act_on_one_file {}
Aynı anda birçok dosya için bir komut çağırmak istiyorsanız, daha fazla kurulum yapmanız gerekir. Bunun act_on_files_by_date $(ls -t)
böyle çalışmadığını unutmayın , çünkü joker karakter veya boşluk içeren dosya adları, komut değiştirme işleminin sonunda genişler. Aşağıdaki kod, hiçbir dosya adı yeni satır veya yazdırılamayan bir karakter içermediği sürece çalışır:
IFS='
'
set -f
act_on_files_by_date $(ls -t)
set +f
unset IFS
Keyfi dosya adlarıyla baş etmek istiyorsanız, standart bir kabuktan daha güçlü araçlara başvurmadan çok zorlanacaksınız: zsh, perl, python…