Используя gnu find, я думаю, это то, что вам нужно. Он находит все реальные файлы, а не каталоги (-тип f), и для каждого печатает имя файла (% p), табуляцию (\ t), размер в килобайтах (% k), суффикс «KB», а затем перевод строки (\ n).
find . -type f -printf '%p\t%k KB\n'
Если команда printf не форматирует вещи так, как вы хотите, вы можете использовать exec, а затем команду, которую вы хотите выполнить для каждого файла. Используйте {} в качестве имени файла и завершите команду точкой с запятой (;). В большинстве оболочек все три этих символа должны быть экранированы обратной косой чертой.
Вот простое решение, которое находит и распечатывает их с помощью "ls -lh", который покажет вам размер в удобочитаемой форме (k для килобайт, M для мегабайт):
find . -type f -exec ls -lh \{\} \;
В качестве еще одной альтернативы "wc -c" напечатает количество символов (байтов) в файле:
find . -type f -exec wc -c \{\} \;
find . -name '*.ear' -exec ls -lh {} + \;
(расширение GNU) илиfind . -name '*.ear' -print0 | xargs -0 ls -lh
. Также вы можете добавить,-type f
если вас интересуют только файлы (или добавить-d
в ls, если вы хотите, чтобы сами каталоги были включены без их содержимого).