Chcę rozwiązać problem „wypisz 10 najlepszych plików w bieżącym katalogu powyżej 20 MB”.
Dzięki ls
mogę zrobić:
ls -Shal |head
aby uzyskać 10 największych plików i:
ls -halt |head
aby uzyskać 10 najlepszych najnowszych plików
Z find mogę zrobić:
find . -size +20M
Aby wyświetlić listę wszystkich plików powyżej 20 MB w bieżącym katalogu (i podkatalogach, których nie chcę).
Czy jest jakiś sposób, aby wyświetlić listę dziesięciu najnowszych plików w określonym rozmiarze, najlepiej używając ls
?
file
„s-ls
polecenia, znaki specjalne zostaną wydrukowane jako znaki backslash-uciekł:find . -maxdepth 1 -size +20M -printf "%T@ " -ls | sort -nr | head -n 20 | sed 's/[^ ]\+ //'
. Dodatkowo format będzie wyglądałls -l
, EoghanM i-l
tak określono .printf
działa tylko dla określonych dystrybucji GNU.%T+
generuje znaczniki czasowe czytelne dla człowieka,2018-11-06+13:37:54.4606466460
które również można sortować wedługsort
(bez-n
), patrz: unix.stackexchange.com/questions/29899/…Globalne kwalifikatory Zsh ułatwiają to. Do
.
wybiera kwalifikacyjne tylko zwykłe pliki,Lm+20
pliki zaznaczane, że są co najmniej 20MB plus jeden bajt długi; aby dołączyć pliki o długości dokładnie 20 MB, użyjL+20971519
. Następnieom
sortuje, zmniejszając czas modyfikacji i[1,10]
ogranicza ekspansję do pierwszych 10 dopasowań. Nadal potrzebujesz-t
opcji,ls
jeśli chcesz wyświetlić listę plików według daty; lub możesz przekazać pliki do innego polecenia (najpierw najmłodsze). Aby przekazać pliki do innego polecenia, poczynając od najstarszego pliku, użyjOm
sortowania poprzez zwiększenie czasu modyfikacji i[-10,-1]
wyodrębnienia ostatnich 10 dopasowań.źródło
Myślę, że może to być lepszy sposób na rozwiązanie problemu ...
Aby pozbyć się błędów podczas wyszukiwania, próbuj uzyskać dostęp do plików, do których odczytu nie masz uprawnień, które możesz chcieć dodać
źródło
Spowoduje to wydrukowanie tylko 10 określonych plików, niezależnie od osadzonych znaków nowej linii w nazwach plików. Używa systemu plików
inodes
źródło
Dziękuję za wszystkie odpowiedzi. Poszedłem za:
Mimo że rezygnuje z 20 megabajtów na korzyść czegokolwiek ponad megabajt (i mniej niż gigabajt), łatwo go zapamiętać i zachowuje czytelny dla człowieka element wielkości plików.
źródło
ls
, to pokazuje reprezentację plików, nic więcej. W przypadku prostych nazw plików dane wyjściowe są w większości równoważne nazwie pliku, ale nie należy na nim polegać.