Pliki większe niż 1 GB i starsze niż 6 miesięcy

20

Chcę znaleźć pliki, które są większe niż 1 GB i starsze niż 6 miesięcy na całym serwerze. Jak napisać do tego polecenie?

shinek
źródło

Odpowiedzi:

37

Użyj find:

find /path -mtime +180 -size +1G

-mtimeoznacza wyszukiwanie czasów modyfikacji dłuższych niż 180 dni (+180). I -sizeparametr wyszukuje pliki większe niż 1 GB.

chaos
źródło
2
Należy zauważyć, że w findimplementacjach, w których ten Gsufiks jest obsługiwany, oznacza to GiB (1073741824 bajtów), a nie GB (1000000000). Przenośny, użyłbyśfind /path -mtime +180 -size +1073741824c
Stéphane Chazelas
1
jeśli chcesz uniknąć błędów między listą plików takich jak te: find: a.txt :Permission deniedSugeruję dodanie tego 2>/dev/nullinspirowanego tym komentarzem: unix.stackexchange.com/questions/42841/…
gmansour 10'18
Możesz także xargs ls -lhSfind /path -mtime +180 -size +1G | xargs ls -lhS
potokować
@ user553965 Twoje polecenie nie będzie działać. Co jest rzeczywiście potrzebne do sortowania według wielkości jest: find / -size +1G -mtime +180 -print0 2>/dev/null | xargs -0 ls -lhS. Uwaga dla początkujących: Przekierowanie po 2>/dev/nullprostu pozbywa się permission deniedbłędów, które nieuchronnie pojawią się podczas wyszukiwania z katalogu głównego. Aby posortować według daty ostatniej modyfikacji, użyj ls -lhtzamiast tego i dodaj rdo lspoleceń, np. ls -lhSrSpowoduje odwrócenie wyników (od najmniejszej do największej / od najstarszej do najnowszej).
Mattst
6

find / -size +1G -mtime +180 -type f -print

Oto wyjaśnienie opcji polecenia według opcji: Począwszy od katalogu głównego, znajduje wszystkie pliki większe niż 1 Gb, zmodyfikowane ponad 180 dni temu, które są typu „plik”, i drukuje ich ścieżkę.

dr01
źródło