Ответы:
Я бы использовал find dirname -not -empty -ls, предполагая, что GNU find.
lsа вы использовали find;) Я поднял хотя ... Это правильное решение
Это работа для find ls не достаточно мощная.
find -maxdepth 1 -size +0 -print
-maxdepth 1 - это говорит find для поиска только текущего dir, удаления для просмотра всех sub dir или изменения номера для перехода на 2, 3 или более уровней.
-size +0это говорит find искать файлы с размером больше 0байтов. 0может быть изменен на любой размер, который вы хотите.
-print говорит find распечатать полный путь к найденному файлу
Изменить:
Позднее добавление: Вы, вероятно, также должны добавить -type fпереключатель выше. Это говорит найти только для поиска файлов. И, как отмечено в комментариях ниже, -printпереключатель на самом деле не нужен.
-maxdepth 1раньше -size +0. Также -printявляется действием по умолчанию, поэтому оно не требуется.
findсильно различаются с точки зрения того, какие допустимые варианты и куда они могут пойти. GNU find(который очень распространен) выдаст предупреждение, если вы поставите его -sizeраньше -maxdepth.
У Ls почти нет возможности фильтровать файлы: это не его работа. Фильтрация файлов - это работа оболочки для простых дел (с помощью глобализации) и работа поиска для сложных дел.
В zsh вы можете использовать Lклассификатор globbing для сохранения только тех файлов, размер которых> 0 ( .классификатор ограничен обычными файлами):
ls *(.L+0)
Пользователи других оболочек должны использовать find. С помощью GNU find (как в основном в Linux):
find -maxdepth 1 -type f ! -empty -exec ls {} +
POSIX-совместимый способ:
find . -type f -size +0c -exec ls {} + -o -name . -o -prune
Если lsне просто пример , и вы просто собираетесь визуальный осмотр, вы могли бы сортировать по размеру: ls -S.