Подтвердить что ты не робот

Как "ls" только один уровень глубины?

У меня есть много подкаталогов, содержащих данные, и мне нужен короткий список заданий (подкаталогов), которые у меня есть. Я недоволен следующей командой.

$ ls H2*
H2a:
energy.dat overlap.dat 
norm.dat zdip.dat ...
(much more)
H2b:
energy.dat overlap.dat
norm.dat zdip.dat ... 
(much more)

Этот бесполезный беспорядок побеждает цель шаблона (ограничение выхода). Как я могу ограничить вывод на один уровень глубиной? Я хотел бы видеть следующий вывод

H2a/ H2b/ H2z/

Спасибо за вашу помощь, Ник

4b9b3361

Ответ 1

Попробуйте это

ls -d H2*/

Параметр -d должен указывать только "каталоги", но сам по себе просто перечисляет

.

который я лично считаю странным. Подстановочный шаблон необходим для получения фактического списка каталогов.

ОБНОВЛЕНИЕ. Как указывает @Philipp, вы можете сделать это еще более сжато и не выходя из bash, говоря

echo H2*/

Разница в том, что ls будет печатать элементы на отдельных строках, что часто полезно для соединения с другими функциями.

Ответ 2

вам следует рассмотреть возможность использования find, например

find . -type d -maxdepth 1 -name "H2*"

Ответ 3

echo H2*

Это Bash, кто делает расширение, поэтому вам даже не нужно ls.

Если у вас есть как файлы, так и каталоги, начиная с H2, вы можете добавить косую черту, чтобы ограничить glob в каталогах:

echo H2*/

Ответ 4

Используйте tree Стив Бейкер в http://mama.indstate.edu/users/ice/tree/ Он заполняет множество вещей, которые отсутствуют в ls. Чтобы перечислить каталоги на один слой:

tree -adi -L 1 H2*

Ответ 5

Возможно, это то, что вы ищете?

ls | grep H2*