2012-03-16 17 views
6

Geçen ay kaç tane PDF oluşturulduğunu anlamaya çalışıyorum. bu neden çalışmıyor üzerinde herhangi bir fikir ... Ben aşağıdaki komutu kullanıyorum ama 0geçen ay değiştirilen dosyaların sayısını alın

find . -name '*.pdf' -mtime +46 ! -mtime +30 | wc -l 

ben doğru dizinde kulüpler ve mantık doğruysa gibi görünüyor dönüyor? Bunun gibi günleri hesaplamak yerine, aradığım belirli ayı geçmek için daha kolay bir yol var mı?

cevap

21

Hepiniz pdf dosyaları buluyor:

  • 46 gün önce
  • değil 30 gün önce

    x>46 && x<=30 --> false 
    

Boş bir sonuç döndürecektir.


Numeric arguments can be specified as 
    +n  for greater than n, 
    -n  for less than n, 
    n  for exactly n. 

tüm pdf dosyaları (30<x<46) bulmak isterseniz:

$ find . -name '*.pdf' -mtime +30 -mtime -46 
+0

[3 tür "zaman damgası var"] (https://unix.stackexchange.com/a/2465/209677): erişim zamanı ('atime'), değiştirme zamanı ('ctime') ve saati değiştir ('mtime'). Neden "ctime" yerine "mtime" kullanıyorsunuz? –

6

Sen daha eski 46 gündür dosyaları arayan gibi görünen ancak yaşlı (yani genç) 30 den günler.

Buna ne dersiniz? GNU'yu find kullanıyorsanız

find . -name '*.pdf' -mtime -46 -mtime +30 
8

böyle mutlak tarihleri ​​belirtebilirsiniz:

find . -name '*.pdf' -newermt 2012-01-31 ! -newermt 2012-02-29 | wc -l 

-newermt seçenek mutlak zamandan daha fazla yakın zamanda değiştirilmiş dosyalar bulacaksınız. GNU'yu kullanmıyorsanız

, böyle PDF'lerinizi uygun damgaları ile iki dosya oluşturmak ve bulmak için touch kullanabilirsiniz:

touch -t 201201312359 oldest # 11:59 PM 1/31/2012 
touch -t 201203010000 newest # midnight 3/1/2012 
find . -name '*.pdf' -newer oldest ! -newer newest | wc -l 

Detaylar için GNU documentation bakınız.

+0

Bahşiş için teşekkürler! Bu, 4.3.3+ (24 Ocak 2009) ile çalışır, dolayısıyla eski sistemlerde (RHEL 5 gibi) kullanılamaz. – Nickolay

İlgili konular