Вероятно, потому что спрашивал аскер, lsа вы использовали find;) Я поднял хотя ... Это правильное решение
BloodPhilia
2
Если вы используете «find. -Not -empty -ls», он также будет включать текущий каталог (то есть «.» В свой вывод), чтобы просто включить текущие файлы, используйте «find. -Type f -not -empty -ls»
-maxdepth 1 - это говорит find для поиска только текущего dir, удаления для просмотра всех sub dir или изменения номера для перехода на 2, 3 или более уровней.
-size +0это говорит find искать файлы с размером больше 0байтов. 0может быть изменен на любой размер, который вы хотите.
-print говорит find распечатать полный путь к найденному файлу
Изменить:
Позднее добавление: Вы, вероятно, также должны добавить -type fпереключатель выше. Это говорит найти только для поиска файлов. И, как отмечено в комментариях ниже, -printпереключатель на самом деле не нужен.
Чтобы избежать предупреждения вы должны разместить -maxdepth 1раньше -size +0. Также -printявляется действием по умолчанию, поэтому оно не требуется.
cyrus
@cYrus - Никаких предупреждений для меня (cygwin)
Nifle
Реализации 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.
ls
а вы использовалиfind
;) Я поднял хотя ... Это правильное решениеЭто работа для find ls не достаточно мощная.
-maxdepth 1
- это говорит find для поиска только текущего dir, удаления для просмотра всех sub dir или изменения номера для перехода на 2, 3 или более уровней.-size +0
это говорит find искать файлы с размером больше0
байтов.0
может быть изменен на любой размер, который вы хотите.-print
говорит find распечатать полный путь к найденному файлуИзменить:
Позднее добавление: Вы, вероятно, также должны добавить
-type f
переключатель выше. Это говорит найти только для поиска файлов. И, как отмечено в комментариях ниже,-print
переключатель на самом деле не нужен.источник
-maxdepth 1
раньше-size +0
. Также-print
является действием по умолчанию, поэтому оно не требуется.find
сильно различаются с точки зрения того, какие допустимые варианты и куда они могут пойти. GNUfind
(который очень распространен) выдаст предупреждение, если вы поставите его-size
раньше-maxdepth
.find dirname -type f ! -empty
источник
Если вы намереваетесь использовать
ls
, вам нужна небольшая помощь отawk
.источник
У Ls почти нет возможности фильтровать файлы: это не его работа. Фильтрация файлов - это работа оболочки для простых дел (с помощью глобализации) и работа поиска для сложных дел.
В zsh вы можете использовать
L
классификатор globbing для сохранения только тех файлов, размер которых> 0 (.
классификатор ограничен обычными файлами):Пользователи других оболочек должны использовать find. С помощью GNU find (как в основном в Linux):
POSIX-совместимый способ:
Если
ls
не просто пример , и вы просто собираетесь визуальный осмотр, вы могли бы сортировать по размеру:ls -S
.источник
будет работать лучше, если вы хотите все непустые файлы, а не только каталоги.
источник
Bash 4.0+
источник