Chcę znaleźć pliki nowsze niż 15 sekund, ale starsze niż 2 sekundy. Oto skrypt, którego obecnie używam, który pobiera pliki nowsze niż 15 sekund:
find /my/directory -name '*.jpg' -not -newermt '-15 seconds'
Każda pomoc jest mile widziana
Chcę znaleźć pliki nowsze niż 15 sekund, ale starsze niż 2 sekundy. Oto skrypt, którego obecnie używam, który pobiera pliki nowsze niż 15 sekund:
find /my/directory -name '*.jpg' -not -newermt '-15 seconds'
Każda pomoc jest mile widziana
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ć:
find /my/directory -newermt '-15 seconds' -not -newermt '-2 seconds'
Lub, aby być zgodnym z POSIX:
find /my/directory -newermt '-15 seconds' \! -newermt '-2 seconds'
Ponadto, abyś ty (i inni czytelnicy) byli świadomi, że „nowszy” oznacza zmodyfikowany niedawno, a nie utworzony niedawno.
-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łem file
.
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ży find
, to nieprzenośny GNUism.
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: Naprawiono libfind
opublikowano w schily tools
.
gfind
ogóle dodano -not
alias. Nigdy nie był potrzebny, a jego obecność można postrzegać jako blokadę strategii dla dostawcy.
find
wdrożeniach.