15 saniyeden yeni ancak 2 saniyeden eski dosyaları bulma


17

15 saniyeden yeni ancak 2 saniyeden eski dosyaları bulmak istiyorum. İşte şu anda 15 saniyeden daha yeni dosyaları kapmak kullanıyorum komut dosyası:

find /my/directory -name '*.jpg' -not -newermt '-15 seconds'

Herhangi bir yardım büyük beğeni topluyor


2
Hangi işletim sistemini kullanıyorsunuz? findUygulamalarda farklılıklar vardır .
terdon

Tam olarak 2 saniye önce değiştirilmiş bir dosya eşleşmeli mi? Tam 15 saniye önce değiştirilmiş bir dosyaya ne dersiniz?
Mikel

Script başlangıcında veya bittiği anda 2 saniyeden yeni mi?
Stéphane Chazelas

@Mikel, günümüzde saatlerin nanosaniye çözünürlüğüne sahip olması muhtemelen önemsizdir.
Stéphane Chazelas

1
Tamam ... kimse sormadığı için ... @ Yllier123 neden 2 <x <15 sn arasında oluşturulan dosyaları bulmanız gerekiyor? Ben sadece merak ediyorum.
C Bauer

Yanıtlar:


17

Birden fazla yüklemleri zincirleyerek birleştirebilirsiniz.

Hayır -oldermt, ama bunu şöyle yazabilirsiniz -not -newermt.

İstediğiniz:

  • -newermt '-15 seconds' dosyanın 15 saniyeden az olduğunu söylemek ve
  • -not -newermt '-2 seconds' dosyanın 2 saniyeden daha eski olduğunu söylemek için

Deneyin:

find /my/directory -newermt '-15 seconds' -not -newermt '-2 seconds'

Veya POSIX uyumlu olmak için:

find /my/directory -newermt '-15 seconds' \! -newermt '-2 seconds'

Ayrıca, siz ve (diğer okuyucuların) farkında olmanız için, "daha yeni" ifadesi, daha yakın zamanda değiştirilmemiş, daha yeni değiştirilmiş anlamına gelir.


3
Güzel. -not -newermt '-2 seconds'Ayrıca, tam olarak 2 saniye eski dosyalarla eşleşeceğini unutmayın . Bunları -not -newermt '3 seconds'da hariç tutmak için kullanın .
terdon

1
Evet, kenar çantalar her zaman eğlencelidir. Aslında bu karşılaştırmalar için hangi çözünürlüğü kullandığından emin değilim. Benim varsayımım ~ 2.000000001 saniye önce değiştirilen herhangi bir şey bir eşleşme, ancak bu da dosya sisteminize ve işletim sisteminize bağlı olacaktır.
Mikel

İyi bir nokta, çözümün ne olduğu hakkında hiçbir fikrim yok. Sadece denedim touch -d "2 seconds ago" file; find . -newermt '-15 seconds' -not -newermt '-2 seconds've aldım file.
terdon

@terdon Bu, zaman damgalarının bir saniyeden daha hassas bir çözünürlüğe sahip olup olmadığına bağlıdır; O sistemde, dosya sistemi bağlıdır ve birden çok farklı makineler tarafından kullanılır eğer aynı dosya sisteminde dosyalar arasında bile değişebilir.
Blacklight Shining

"daha yeni", "daha yakın zamanda" anlamına gelir. "Değiştirilmiş" anlamına gelen "m" dir.
OrangeDog

4

İşletim sisteminizden bahsetmediniz ....

Bu, FreeBSD'deki gibi modern bir bulma uygulamasıyla veya ile iyi çalışır sfind.

find /my/directory -name '*.jpg' -mtime -15s -mtime +2s

Sfind, Schily araçlarının bir parçasıdır: http://sourceforge.net/projects/schilytools/files/

UYARI: İçinde bir sorun olduğunu keşfettim sfind. Bağımsız -mtimedeğişkenler 60 saniyeden azsa, dosya zamanları, gelecekte yıl anahtarı için hesaplanan 60 saniye sonraki zaman damgasıyla karşılaştırıldığından, düzgün çalışmaz -ls.

BTW: -notait değil find, taşınabilir olmayan bir GNUizm.


1
Orada bashçevre, Cygwin, Debian GNU / Hurd olabilir Yani etiket ... bashFreeBSD veya Solaris, ... ;-) üzerinde çalışan
PHK

GNU için find, her ne kadar çılgın olsa da, ondalık sayılar geçici bir çözüm olarak kullanılabilir.
Arthur2e5

POSIX bulmak var !olduğu -henüz için! expression . Yani, önemli değil.

Ben geliştirilmiş bir standardı ile çalışır bu yöntemi söz nedeni budur @phk primarydan findher zaman yeni eklemeye gerek olmadığını insanları bilgilendirmek için primariesişlevselliğini geliştirmek için muktedir bulmak için. BTW: 'da bir sabit libfindyayınlandı schily tools.
Schily

@BinaryZebra sorun, takma adı gfindhiç eklememiş olmasıdır -not. Hiç gerek yoktu ve varlığı stratejide bir satıcı kilidi olarak görülebilir.
Schily
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.