Ответы:
Я бы использовал 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
.