Mamy zestaw katalogów zawierających indeksy lucenu. Każdy indeks jest mieszanką różnych typów plików (w zależności od rozszerzenia), np .:
0/index/_2z6.frq
0/index/_2z6.fnm
..
1/index/_1sq.frq
1/index/_1sq.fnm
..
(to około 10 różnych rozszerzeń)
Chcielibyśmy uzyskać sumę według rozszerzenia pliku, np .:
.frq 21234
.fnm 34757
..
Próbowałem różnych kombinacji du / awk / xargs, ale znalezienie tego jest trudne.
filesystems
shell
disk-space-utilization
Barnybug
źródło
źródło
Odpowiedzi:
Do dowolnego rozszerzenia możesz użyć
aby uzyskać całkowity rozmiar pliku dla tego typu.
I po namyśle
Który wyświetli rozmiar w bajtach każdego znalezionego typu pliku.
źródło
-iname
aby rozróżnić wielkość liter w wyszukiwaniu rozszerzenia pliku.Z bash version4, wystarczy do wywołania
find
,ls
aawk
nie jest to konieczne:źródło
read name size
sięread size name
i-printf "%f\t%s\n"
do-printf "%s\t%f\n"
powinien to naprawić.if [ "$name" == "$ext" ]; then ext="*no_extension*"; fi
po,ext=${name##*.}
jeśli chcesz temu zapobiec. Spowoduje to umieszczenie wszystkich plików bez rozszerzenia w*no_extension*
grupie (używam,*no_extension*
ponieważ*
nie jest prawidłowym znakiem w nazwie pliku)Co druga kolumna podzielona przez
.
ostatnią część (rozszerzenie) zapisaną w tablicy.to masz całkowity rozmiar każdego rozszerzenia w bajtach.
źródło
Rozszerzenie na skrypt Iaina z szybszą wersją do pracy z dużą liczbą plików.
źródło
Oto rozwiązanie:
Rozwiązanie opublikowane pierwotnie w tym poście: Uzyskaj wszystkie rozszerzenia i odpowiadające im liczby plików w katalogu
źródło
Rozwiązałem za pomocą tych dwóch poleceń:
źródło
moja wersja odpowiedzi na pytanie:
źródło
Wypróbuj Crab ( http://etia.co.uk/ ) - to narzędzie wiersza polecenia, które pozwala na zapytanie systemu plików za pomocą SQL.
źródło