Używanie find -mmin do znajdowania plików z czasem modyfikacji w przyszłości

9

mogę użyć

find . -mmin -5

znaleźć pliki zmienione w ciągu ostatnich 5 minut. Jeśli jednak spróbuję znaleźć pliki z czasem modyfikacji w przyszłości, podając liczbę ujemną, findodmówię:

find . -mmin --1

Czy istnieje sposób, aby dać przyszły czas na modyfikację standardowego systemu Linux find?

Muxecoid
źródło

Odpowiedzi:

9

Aby znaleźć pliki zmodyfikowane co najmniej 5 dni w przyszłości, użyj:

find . -newermt "5 days"

Składnia dla specyfikacji czasu odpowiada tej dla date -d. Więcej man findinformacji na temat przełącznika o nazwie -newerXY.

Nie można użyć np. -mminDo tego celu. Został zgłoszony jako błąd w znalezieniu GNU i został rozwiązany poprzez implementację -newerXYw findutils 4.3.3 (~ 2007), jak pokazałem powyżej.


Najwyraźniej użyto nie znalezienia GNU, ale BusyBox.

Powinieneś być w stanie utworzyć plik tymczasowy z touch -ddatą w przyszłości, a następnie użyć -newerprzełącznika, na findprzykład:

touch -d "+5 days" tmpfile
find . -newer tmpfile

BusyBox touchnie obsługuje tego formatu daty, ale zasada jest taka sama i findobsługuje -newer. Utworzenie pliku referencyjnego z poprawną datą pozostawia czytelnikowi ćwiczenie (zawsze wygodne pisanie).

Daniel Andersson
źródło
Dzięki. Mój problem polega na tym, że moje znalezisko to stare osadzone BusyBox find, a nie binutil find. Niby standardowy sposób linuksowy tutaj nie działa. :(
Muxecoid
@Muxecoid: Zaktualizowałem swoją odpowiedź kilkoma uwagami BusyBox.
Daniel Andersson
To tylko zaoszczędziło mi kłopotów na nowej maszynie, w której przez przypadek zrobiłem coś dziesięć godzin w przyszłości (przesunięcie strefy czasowej zastosowane do już przesuniętego zegara sprzętowego), a po ustawieniu zegara configureskrypt narzekał na rzeczy w przyszłości (przez półtorej godziny jeszcze): find . -newermt '1 hour' | xargs touch -d '-9 hours'i mogę kontynuować. :-)
Chris Morgan