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.