Mam w katalogu setki plików pdf i html. I chcę poznać całkowity rozmiar plików pdf.
Z polecenia du -ch /var/foo
widzę całkowity rozmiar pliku, ale potrzebuję tylko ostatniego wiersza, całkowitego rozmiaru.
Jeśli katalog zawiera tylko pliki pdf, mogę użyć -s
opcji, ale tym razem nie można użyć tej opcji.
Jak mogę uzyskać tylko całkowity rozmiar określonego typu pliku?
shell
wildcards
disk-usage
żelazko piaskowe
źródło
źródło
du -sh /foo/*.pdf
?du -ch /var/foo/*.pdf | tail -n 1
Odpowiedzi:
W GNU
du
(tj. W niewbudowanym systemie Linux lub Cygwin) możesz użyć--exclude
opcji wykluczenia plików, których nie chcesz dopasowywać.Jeśli chcesz pozytywnie dopasować
*.pdf
pliki, musisz użyć innej metody, aby wyświetlić listę plików, idu
wyświetli co najmniej jedną linię wyjściową na argument, plus ogólną sumę z opcją-c
. Możesz zadzwonić,tail
aby usunąć wszystko oprócz ostatniego wiersza, lub sed, aby usunąć również słowo „total”. Aby wyliczyć pliki w tym jednym katalogu, użyj symboli wieloznacznych w powłoce.Jeśli potrzebujesz również przejść do plików w podkatalogach, użyj
find
lub użyj**/
wzorca, jeśli twoja powłoka to obsługuje. W przypadku**/
bash, pierwszego uruchomieniashopt -s extglob
i zauważ, że wersje bash do 4.2 będą przechodzić przez dowiązania symboliczne do katalogów; w zsh działa to od razu po wyjęciu z pudełka.Dodatkową komplikacją związaną z wersją find jest to, że jeśli jest zbyt wiele plików,
find
uruchomi siędu
więcej niż jeden raz, aby zachować limit długości wiersza poleceń. Dzięki metodzie wieloznacznej pojawi się błąd, jeśli tak się stanie („Przekroczono limit długości wiersza poleceń”). Poniższy kod zakłada, że nie masz pasującej nazwy pliku zawierającej znak nowej linii.źródło
--exclude='*.html'
nie spowodowałoby/var/foo/dir.html/foo.pdf
to liczenia, ponieważ wykluczenia wpływają również na przechodzenie do katalogu; uwzględnione/var/foo
byłoby również użycie dysku przez katalogi, w tym samego siebie)Możesz pozwolić powłoce rozwinąć pliki:
Jak jednak widać, wskazuje to na rozmiar pliku około 1000 razy, jak właśnie utworzono. Lepszą opcją jest użycie
-b
opcji:Duże rozmiary plików będą nadal wyświetlane w postaci czytelnej dla człowieka, np
173K
.źródło
du
pokazuje użycie dysku dla każdego pliku (w większości systemów plików, jest to rozmiar pliku zaokrąglony w górę do następnej wielokrotności rozmiaru bloku). Z opcją-b
,du
pokazuje rozmiar każdego pliku.