Как получить список каталогов linux для файлов, начинающихся с определенной буквы, которая не опускается в подкаталоги?

17

Предположим, вы находитесь в каталоге, который содержит много файлов и много подкаталогов.

Вы хотите получить список каталогов всех файлов, начинающихся с буквы "d". Вы печатаете

ls d*

и вы получите в основном файлы в подкаталогах (в частности, файлы в подкаталогах, которые начинаются с «d»).

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

dggoldst
источник

Ответы:

31

Ах, я только что нашел это в 6-м чтении справочной страницы. Это не очень разумно названный параметр "directory"

ls -d d* 
dggoldst
источник
6
Вам понадобилось всего 29 секунд, чтобы перечитать справочную страницу и написать этот ответ? Это быстро :-)
Балфа
1
Кроме того, ls -dd * / покажет только каталоги.
InnaM
6
Бальфа - я обнаружил это, прежде чем задавать вопрос, а затем понял, что если бы мне потребовалось так много времени, чтобы понять это, я мог бы также помочь будущему искателю и опубликовать здесь вопросы и ответы.
dggoldst
3
Справедливо; в этом нет ничего плохого.
Балфа
1
И все же, CppLearner, это действительно работает. Попытайся.
dggoldst
10

Я считаю, что еще одно интересное решение,

ls | grep ^d

Предлагает гибкость регулярных выражений.

Kuer
источник
3
И сложность регулярных выражений! ;-)
Крис Нава
1
Это интересное решение, и мне нравится идея использования регулярных выражений, однако, если вы добавите дополнительные параметры в ls, он сломается. Например, "ls -l | grep ^ d"
dggoldst
Правда, но не все параметры. ls -a | grep "^ \." распечатал бы все «скрытые» файлы.
Куэр
другие ls flagsне работают при использовании этого подхода. например ls -ltr | grep ^d, не работает. в то время как тот, который предложен в ответе @dggoldst, делает.
Хитеш Исрани
3

находить . -maxdepth 1 -имя d * -типа f

Хорошо, использование находки здесь немного излишне. Просто немного.

Джеймс Полли
источник
1
Но это помогло мне перечислить все прямые каталоги пользователя конкретного: find /home/ -maxdepth 1 -type d -user www-data. Так что спасибо и +1
Кирилл Н.
1

ls -ld: Выдаст список каталогов, не спускаясь в подкаталоги.

Пример:

ls -ld Cust*
Эта команда предоставит список файлов и каталогов, которые начинаются с Cust.

chelladurai
источник
1
По сути, это то же самое, что и пятилетний принятый ответ.
Скотт