Belirli bir tarihte değiştirilmiş olan tüm dosyaları alma


20

phpBelirli bir dizinde belirli bir tarihte değiştirilmiş tüm dosyaları bulmak mümkün mü

kullanıyorum

find /var/www/html/dir/ -mtime -28 | grep '\.php' 

son 28 gün içinde değiştirilen dosyaları almak için, ama sadece aşağıdaki tarihte değiştirilmiş dosyalara ihtiyacım var: 2011-02-08

Yanıtlar:


22

find(Örneğin GNU 4.4.0) 'ın son sürümlerinde -newermtseçeneği kullanabilirsiniz . Örneğin, 2011-02-08'de değiştirilen tüm dosyaları bulmak için

$ find /var/www/html/dir/ -type f -name "*.php" -newermt 2011-02-08 ! -newermt 2011-02-09

Ayrıca php dosyaları bulmak için grep içine boru gerekmez unutmayın çünkü bulmak -nameseçeneği sizin için yapabilir .

Daha fazla öneri için bu SO cevabına bir göz atın: Belirli bir tarihte oluşturulan dosyaları aramak için 'find' nasıl kullanılır?


4

Can sıkıcı, standart ile doğrudan bir yolu yoktur find. findGNU sistemlerindeki son sürümlerin (örn. Gömülü olmayan Linux, Cygwin) ve bazı * BSD'lerin dosya tarihini hecelenmiş bir tarihle karşılaştırma gibi seçenekleri vardır-newermt .

Standart ile findyapabileceğiniz tek şey, dosya tarihini geçerli tarihle ( -mtime) veya sabit bir dosyayla karşılaştırmaktır. Geçerli tarih genellikle bu durumda yararlı değildir ( findçoğu uygulama bir takvim tarihi gerektirirken , komutu çalıştırdığınız zamandan geriye doğru sayar ). Bu, bir aralık tanımlamak için geçici dosyalar oluşturmanın çamurunu bırakır.

touch -t 201103070000 start.tmp
touch -t 201103080000 stop.tmp
find . -newer start.tmp \! -newer stop.tmp -print
rm start.tmp stop.tmp

2

Zaten neredeyse doğru komutunuz var , findbunun sürümleri tarihleri ​​kullanmanıza izin vermiyor:

find /var/www/html/dir/ -mtime 27 | grep '\.php'

İçin Genel olarak, find- N vasıtasıyla daha az , n vasıtası ile aynı değeri + n vasıtasıyla "fazla". Geleneksel findbazı istisnalar vardır, ancak GNU findve BSD / Mac OS X gibi diğer yeni sürümler bunları düzeltti. (Kendinizi bir Solaris veya başka bir ticari Unix sisteminde bulursanız bunu aklınızda bulundurun.)


1

İle işlevi yalnızca belirli bir tarihte değiştirilmiş olan dosyaların adlarını yazdırmak için zshkullanabilirsiniz :age

otomatik yükleme yaşı
print -rl - * .php (.e: yaş 2011/02/08 :)

veya özyinelemeli olarak arama yapmak istiyorsanız:

otomatik yükleme yaşı
setopt genişletilmiş glob
print -rl - ** / *. php (.e: yaş 2011/02/08 :)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.