Как я могу перечислить только непустые файлы с помощью ls?

Как я могу перечислить (использование ls) все файлы, которые не пусты (размер> 0) использование Linux?

36
задан 03.10.2010, 00:02

7 ответов

Я использовал бы find dirname -not -empty -ls, принятие GNU находит.

49
ответ дан 07.12.2019, 08:55

find dirname -type f ! -empty

10
ответ дан 07.12.2019, 08:55

Это - задание для находки ls, не достаточно мощно.

find -maxdepth 1 -size +0 -print

-maxdepth 1 - это говорит, находят, чтобы искать текущий dir только, удалить, чтобы посмотреть во всех sub директорах или изменить число для потери работоспособности 2, 3 или больше уровня.

-size +0 это говорит, находят для поиска файлов с размером, больше, чем 0 байты. 0 может быть изменен на любой размер, который Вы хотели бы.

-print говорит находят для распечатывания полного пути в файл, который он находит

Править:
Последнее дополнение: необходимо, вероятно, также добавить -type f переключатель выше. Это говорит, находят, чтобы только найти файлы. И, как отмечено в комментариях ниже, -print переключатель не действительно необходим.

19
ответ дан 07.12.2019, 08:55
 $ find /* -type f ! -size 0

будет работать лучше, если Вы захотите все не пустые файлы, а не просто каталоги.

3
ответ дан 07.12.2019, 08:55
ls -l | awk '{if ($5 != 0) print $9}'

Если Вы полны решимости относительно использования ls, Вы нуждаетесь в небольшой помощи от awk.

8
ответ дан 07.12.2019, 08:55

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.

7
ответ дан 07.12.2019, 08:55

Bash 4.0 +

shopt -s globstar
shopt -s nullglob
for file in **/*; do  test -f "$file" && [[ -s "$file" ]] && echo "$file"; done
1
ответ дан 07.12.2019, 08:55

Теги

Похожие вопросы