Używając funkcji wyszukiwania gnu, myślę, że tego właśnie chcesz. Znajduje wszystkie prawdziwe pliki, a nie katalogi (-type f), i dla każdego z nich wypisuje nazwę pliku (% p), tabulator (\ t), rozmiar w kilobajtach (% k), przyrostek „KB”, a następnie nowa linia (\ n).
find . -type f -printf '%p\t%k KB\n'
Jeśli polecenie printf nie formatuje rzeczy tak, jak chcesz, możesz użyć exec, a następnie polecenie, które chcesz wykonać na każdym pliku. Użyj {} jako nazwy pliku i zakończ polecenie średnikiem (;). W większości powłok wszystkie trzy znaki powinny być poprzedzone ukośnikiem odwrotnym.
Oto proste rozwiązanie, które wyszukuje i drukuje je przy użyciu „ls -lh”, które pokaże rozmiar w postaci czytelnej dla człowieka (k to kilobajty, M to megabajty):
find . -type f -exec ls -lh \{\} \;
Jako jeszcze jedna alternatywa, „wc -c” wypisze liczbę znaków (bajtów) w pliku:
find . -type f -exec wc -c \{\} \;
find . -name '*.ear' -exec ls -lh {} + \;
(rozszerzenie GNU) lubfind . -name '*.ear' -print0 | xargs -0 ls -lh
. Możesz także chcieć dodać,-type f
jeśli interesują Cię tylko pliki (lub dodać-d
do ls, jeśli chcesz, aby same katalogi były dołączone bez ich zawartości).