Ładny. Pamiętaj, że -not -newermt '-2 seconds'dopasuje również pliki dokładnie w wieku 2 sekund. Użyj, -not -newermt '3 seconds'aby je również wykluczyć.
terdon
1
Tak, skrzynie zawsze są zabawne. Nie jestem pewien, jakiej rozdzielczości używa do tych porównań. Zakładam, że wszystko, co zostało zmodyfikowane ~ 2.000000001 sekund temu, jest zgodne, ale zależy to również od systemu plików i systemu operacyjnego.
Mikel
Dobra uwaga, nie mam pojęcia, jaka jest rozdzielczość. Właśnie przetestowałem touch -d "2 seconds ago" file; find . -newermt '-15 seconds' -not -newermt '-2 seconds'i dostałem file.
terdon
@terdon Cóż, to zależy od tego, czy znaczniki czasu mają rozdzielczość dokładniejszą niż jedna sekunda; która zależy od systemu, systemu plików, a nawet może się różnić pomiędzy plikami na tym samym systemie plików, jeśli jest stosowany przez wielu różnych maszynach.
Blacklight Shining
„nowszy” oznacza „nowszy niż”. To „m” oznacza „zmodyfikowany”.
OrangeDog
4
Nie wspomniałeś o swoim systemie operacyjnym ....
Działa to dobrze z nowoczesną implementacją find, taką jak ta z FreeBSD lub z sfind.
OSTRZEŻENIE: Właśnie odkryłem problem sfind. Jeśli -mtimeargumenty są mniejsze niż 60s, nie będzie działać poprawnie, ponieważ czasy plików są obecnie porównywane ze znacznikiem czasu 60 sekund w przyszłości, który pierwotnie był obliczany dla zmiany roku -ls.
@phk Dlatego wspomniałem o metodzie, która działa z ulepszonym standardem primaryod, findaby poinformować ludzi, że nie trzeba zawsze dodawać nowych, primariesaby znaleźć możliwość zwiększenia funkcjonalności. BTW: Naprawiono libfindopublikowano w schily tools.
schily
@BinaryZebra problem polega na tym, że w gfindogóle dodano -notalias. Nigdy nie był potrzebny, a jego obecność można postrzegać jako blokadę strategii dla dostawcy.
find
wdrożeniach.Odpowiedzi:
Możesz łączyć wiele predykatów, łącząc je w łańcuchy.
Nie ma
-oldermt
, ale możesz to napisać jako-not -newermt
.Chcesz:
-newermt '-15 seconds'
powiedzieć, że plik ma mniej niż 15 sekund, oraz-not -newermt '-2 seconds'
że plik ma więcej niż 2 sekundyPróbować:
Lub, aby być zgodnym z POSIX:
Ponadto, abyś ty (i inni czytelnicy) byli świadomi, że „nowszy” oznacza zmodyfikowany niedawno, a nie utworzony niedawno.
źródło
-not -newermt '-2 seconds'
dopasuje również pliki dokładnie w wieku 2 sekund. Użyj,-not -newermt '3 seconds'
aby je również wykluczyć.touch -d "2 seconds ago" file; find . -newermt '-15 seconds' -not -newermt '-2 seconds'
i dostałemfile
.Nie wspomniałeś o swoim systemie operacyjnym ....
Działa to dobrze z nowoczesną implementacją find, taką jak ta z FreeBSD lub z
sfind
.find /my/directory -name '*.jpg' -mtime -15s -mtime +2s
Sfind jest częścią narzędzi Schily: http://sourceforge.net/projects/schilytools/files/
OSTRZEŻENIE: Właśnie odkryłem problem
sfind
. Jeśli-mtime
argumenty są mniejsze niż 60s, nie będzie działać poprawnie, ponieważ czasy plików są obecnie porównywane ze znacznikiem czasu 60 sekund w przyszłości, który pierwotnie był obliczany dla zmiany roku-ls
.BTW:
-not
nie należyfind
, to nieprzenośny GNUism.źródło
bash
tag… Więc środowiskiem może być Cygwin, Debian GNU / Hurd,bash
działający na FreeBSD lub Solaris,… ;-)find
wydaje się, że dziesiętne, choć szalone, mogą być użyte jako obejście.!
opcję -not as! expression
. Więc nic wielkiego.primary
od,find
aby poinformować ludzi, że nie trzeba zawsze dodawać nowych,primaries
aby znaleźć możliwość zwiększenia funkcjonalności. BTW: Naprawionolibfind
opublikowano wschily tools
.gfind
ogóle dodano-not
alias. Nigdy nie był potrzebny, a jego obecność można postrzegać jako blokadę strategii dla dostawcy.