Muszę znaleźć największe pliki w folderze.
Jak skanować folder rekurencyjnie i sortować zawartość według rozmiaru?
Próbowałem użyć ls -R -S
, ale zawiera również katalogi.
Próbowałem też użyć find
.
command-line
find
ls
użytkownik2179293
źródło
źródło
Odpowiedzi:
Możesz to również zrobić za pomocą just
du
. Dla pewności korzystam z tej wersjidu
:Podejście:
Podział podejścia
Polecenie
du -ah DIR
wyświetli listę wszystkich plików i katalogów w danym kataloguDIR
.-h
Będzie produkować ludzkie rozmiary czytelne które wolę. Jeśli nie chcesz ich, upuść ten przełącznik. Używamhead -6
tylko, aby ograniczyć ilość danych wyjściowych!Łatwo posortować od najmniejszej do największej:
Odwróć, od największego do najmniejszego:
Nie pokazuj mi katalogu, tylko pliki:
Jeśli chcesz tylko listę od najmniejszych do największych, ale 6 najczęściej obrażających się plików, możesz odwrócić przełącznik sortowania, drop (
-r
) i użyćtail -6
zamiasthead -6
.źródło
grep -v "/$"
część wydaje się nie działać zgodnie z oczekiwaniami, ponieważ do katalogów nie dołączono ukośnika. Czy ktoś wie, jak wykluczyć katalogi z wyników?/
- na przykład/home/saml/Downloads/audible
wydaje się być katalogiem, ale nie ma ukośnika. Tylko/home/saml/Downloads/
ma ukośnik, ale to prawdopodobnie dlatego, że napisał go z kreską przy określaniu argument początkowydu
.Jeśli chcesz znaleźć wszystkie pliki w bieżącym katalogu i jego podkatalogach i wyświetlić je zgodnie z ich rozmiarem (bez uwzględnienia ich ścieżki) i zakładając, że żadna z nazw plików nie zawiera znaków nowej linii, w GNU
find
możesz to zrobić:Z
man find
systemu GNU:Od
man sort
:źródło
Spróbuj wykonać następujące polecenie:
Rekurencyjnie wyświetli listę 20 największych plików w bieżącym katalogu.
Uwaga: Opcja
-h
dlasort
nie jest dostępna w OSX / BSD, więc musisz zainstalowaćsort
zcoreutils
(np. Przezbrew
) i zastosować lokalną ścieżkę binPATH
, np.Alternatywnie użyj:
Do największych katalogów użyj
du
np .:lub:
źródło
Spowoduje to znalezienie rekursywnie wszystkich plików i posortowanie ich według rozmiaru. Drukuje wszystkie rozmiary plików w KB i zaokrągla w dół, więc możesz zobaczyć 0 KB plików, ale było wystarczająco blisko dla moich zastosowań i działa na OSX.
find . -type f -print0 | xargs -0 ls -la | awk '{print int($5/1000) " KB\t" $9}' | sort -n -r -k1
źródło
find . -type f
znajduje pliki ... działa rekurencyjnie, masz rację, ale wyświetla wszystkie znalezione pliki, a nie same katalogiDzięki
zsh
znajdziesz największy plik (pod względem pozornego rozmiaru, takiego jak kolumna rozmiaru nals -l
wyjściu, a nie użycie dysku) z:Dla 6 największych:
Aby rozwiązać te o rozmiarze pliku, można użyć
ls
„s-S
opcję. Niektórels
implementacje mają również-U
opcjęls
nie sortowania listy (ponieważ jest ona tutaj sortowana według rozmiaruzsh
).źródło
Proste rozwiązanie dla systemu Mac / Linux, które pomija katalogi:
źródło
Odpowiednik w
BSD
lubOSX
jestźródło
Jest to niezwykle powszechna potrzeba z różnych powodów (lubię znaleźć najnowszą kopię zapasową w katalogu) i jest zaskakująco prostym zadaniem.
Zamierzam dostarczyć rozwiązanie dla Linuksa, które korzysta z narzędzi find, xargs, stat, tail, awk i sortowania.
Większość ludzi udzieliła kilku unikalnych odpowiedzi, ale ja wolę mój, ponieważ poprawnie obsługuje nazwy plików, a przypadek użycia można łatwo zmienić (modyfikować statystyki i sortować argumenty)
Zapewnię również rozwiązanie Python, które powinno umożliwiać korzystanie z tej funkcji nawet w systemie Windows
Rozwiązanie wiersza polecenia systemu Linux
Rekurencyjnie zwraca całą listę tylko plików z katalogu, posortowaną według rozmiaru pliku
Tak jak poprzednio, ale tym razem zwróć największy plik.
Ten sam dokładny wzór, ale teraz wybierz najnowszy plik zamiast największego
Wyjaśnienie:
Rozwiązanie Python
Wyjaśnienie tego skryptu trwa nieco dłużej, ale w zasadzie jeśli zapiszesz go jako skrypt, przeszuka on pierwszy argument podany w wierszu poleceń i zwróci największy plik w tym katalogu. Skrypt nie sprawdza błędów, ale powinien dać ci wyobrażenie, jak podejść do tego w Pythonie, co daje niezłą platformę niezależną od rozwiązania tego problemu.
źródło
Wariant tej odpowiedzi na podobne pytanie
źródło
Wypróbuj poniższe polecenie z opcją sortowania, aby mieć foldery o rozmiarze w porządku rosnącym
du -sh * | sort -sh
źródło
Coś, co działa na dowolnej platformie oprócz AIX i HP-UX, to:
źródło