Yanıtlar:
find
(Örneğin GNU 4.4.0) 'ın son sürümlerinde -newermt
seç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 -name
seç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?
Can sıkıcı, standart ile doğrudan bir yolu yoktur find
. find
GNU 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 find
yapabileceğ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
Zaten neredeyse doğru komutunuz var , find
bunun 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 find
bazı istisnalar vardır, ancak GNU find
ve 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.)
İle işlevi yalnızca belirli bir tarihte değiştirilmiş olan dosyaların adlarını yazdırmak için zsh
kullanabilirsiniz :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 :)