Usuń pliki zmodyfikowane w ciągu ostatnich n godzin z folderu


1

Mam folder, w którym czasami wykonuję kilka dużych plików. Usuwam je ręcznie. Wiem, że można je usunąć po 1 dniu lub dłużej, ale chciałbym je usunąć, jeśli zostały zmodyfikowane w ciągu ostatnich kilku godzin.

W tym folderze są pliki, których NIE chcę usunąć, a wszystkie mają podobne, ale nieprzewidywalne nazwy plików. Nie mogę po prostu użyć del do usunięcia najnowszych, muszę polegać na dacie modyfikacji.

Odpowiedzi:


1
find /some/dir -type f -mmin -<minutes old> -print0 | xargs -0 rm

Znajduje to wszystkie elementy pod /some/dir które są plikami i są mniejsze niż <minutes old> minut i usuwa je. Nie zapomnij o - przed liczbą minut. Ponadto, jeśli mmin nie załatwi sprawy, spróbuj cmin.


Jeśli chcesz założyć GNU find, można to uprościć find /some/dir -type f -mmin -<minutes old> -delete. Uruchom go najpierw bez -delete opcja pokazująca, co miałoby zostać usunięte. Z POSIX find, find /some/dir -type f -mmin -<minutes old> -exec rm {} +. Wymaga to jednak narzędzi Unix, które nie są dołączone do systemu Windows.
Gilles

Doh. Czy tag „Windows 7” został dodany po udzieleniu odpowiedzi? Nie widziałem tego, jeśli nie. Nie wiedziałem o -delete. Szczerze mówiąc, nie jestem fanem argumentów -delete i -exec do znalezienia; wyglądają jak zakrwawione, a ucieczka, która-zawsze wymagała, obrażała moją delikatną wrażliwość. Jednak dodatkowa wiedza jest dobra; Dziękuję Ci.
Slartibartfast

@slartibartfast: Dodałem tag Windows, ponieważ treść pytania dotyczyła systemu Windows. -exec jest POSIX, podczas gdy -print0 nie jest. (Umysł, -mmin nie jest też POSIX, więc mój sprzeciw nie był uzasadniony.) Ucieczka find wyjście dla xargs jest trudne, chyba że masz -print0; lubię -exec ... + dużo lepiej i nie wymaga ucieczki.
Gilles

Osobiste preferencje. Myślę, że find + xargs jest bardziej uniksowy (w sensie filozoficznym, a nie POSIX / nie-POSIX). Polecam również grep -Z i ewentualnie tar --null. (Zauważ również, że xargs może kontrolować równoległość z -P)
Slartibartfast

0

IIRC Eksplorator Windows może sortować według czasu modyfikacji, więc możesz to zrobić i wybrać pliki, które zostały zmodyfikowane w żądanym zakresie czasu.

slartibartfast podał odpowiedź, która zakłada, że ​​masz zainstalowane podobne do Uniksa narzędzia. W systemie Windows może to być cygwin lub Narzędzia GNU Win32 lub SFU Microsoft Windows lub WYGRAŁEŚ . Jeśli zainstalujesz jedną z nich, upewnij się, że używasz jej find a nie niepowiązane rodzime polecenie Windows.


Najpierw chciałbym, żeby to działało bez instalowania dodatkowego oprogramowania, a po tym, jak nie jestem w stanie tego zrobić, wypróbuję niektóre z wymienionych narzędzi. Powiedziałeś: „IIRC Eksplorator Windows może sortować według czasu modyfikacji, więc możesz to zrobić i wybrać pliki, które zostały zmodyfikowane w żądanym przedziale czasu”. Jak to zrobić?
TMRW

@TMRW: Otwórz katalog w Eksploratorze. Wybierz „Details” w menu „Display” (nazwa może być inna w Twojej wersji Windows). Następnie kliknij nagłówek kolumny daty i godziny, aby posortować według daty i godziny.
Gilles

Tak, to sposób ręczny. Szukam zautomatyzowanego sposobu za pośrednictwem cmd.
TMRW
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.