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