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


17

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

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

ls d*

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

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

Ответы:


31

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

ls -d d* 

6
Вам понадобилось всего 29 секунд, чтобы перечитать справочную страницу и написать этот ответ? Это быстро :-)
Балфа

1
Кроме того, ls -dd * / покажет только каталоги.
InnaM

6
Бальфа - я обнаружил это, прежде чем задавать вопрос, а затем понял, что если бы мне потребовалось так много времени, чтобы понять это, я мог бы также помочь будущему искателю и опубликовать здесь вопросы и ответы.
dggoldst

3
Справедливо; в этом нет ничего плохого.
Балфа

1
И все же, CppLearner, это действительно работает. Попытайся.
dggoldst

10

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

ls | grep ^d

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


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.


1
По сути, это то же самое, что и пятилетний принятый ответ.
Скотт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.