5

Я пытаюсь создать команду, которая отображает только первые 30 файлов, когда вызывается команда ls . Я нашел этот метод ...

ls | head -30

... но в итоге получается выплевывать файлы в один длинный список, не отформатированный в строку или не раскрашенный в соответствии с .bash_profile . Итак, есть ли способ просто ограничить вывод?

2 ответа2

8

Пока Астери не прояснил вопрос, я думал, что у Джона 1024 был ответ. Теперь кажется, что следующее будет работать без опции --color :

ls -d $(ls | head -30)

К сожалению, это слишком упрощенно и не удастся, если в именах файлов есть пробелы. Чтобы учесть это, вам нужно более детально проработать:

ls -b | head -30 | xargs ls -d

В обоих случаях принцип один и тот же: ls | head получает первые 30 файлов, по одному на строку, которые затем представляются в виде списка аргументов другой команде ls , для которой требуется опция -d в случае, если какой-либо из файлов является каталогом.

3

Чтобы получить окраску:

ls -l --color=always | head -30

Обычно ls выдает цвет только тогда, когда вывод идет прямо на терминал. Это вообще хорошая вещь. Чтобы переопределить это, используйте --color=always

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

ls -l | head -30 | column

Утилита столбцов форматирует входные данные в несколько столбцов. Однако использование цвета может сбить его с толку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .