ls -d не делаю то, что мне говорят, что это должно

Ubuntu 14.04 LTS Straight machine, нет двойной загрузки или чего-либо.

Я нахожусь в ~/scratch Я хочу только список каталогов.

tree -dL 1

Получил это! [ ! d2]

man ls говорит:

-d List directories only instead of their contents.

info ls говорит:

-d List just the names of directories...

Ясно, что это не делает то, что мне говорят. Что я не понимаю?

1
задан 31 October 2015 в 13:08

1 ответ

ls -d отобразит записи каталога без их содержимого, он не будет использоваться для отображения только записей каталога внутри каталога.

Пример позволит вам очистить:

$ tree
.
├── egg
├── spam
└── test
    ├── new
    └── old


$ ls *
egg  spam

test:
new  old


$ ls -d *
egg  spam  test

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

Как уже показано в этом ответе, чтобы показывать только записи в каталоге, вы можете использовать [ f7]. [F8] после * гарантирует, что будут показаны только каталоги:

$ ls -d */
test/

Это аналогично:

$ for i in *; do [[ -d $i ]] && echo "$i"; done
test
2
ответ дан 23 May 2018 в 16:13
  • 1
    Да, это работает. Спасибо, гемейл! – ReyKev 31 October 2015 в 19:35
  • 2
    @ReyKev Нет проблем. Пожалуйста, выберите любой из ответов, указанных как принятый, щелкнув галочку в левой части ответа, чтобы эта проблема была отмечена как разрешенная. – heemayl 31 October 2015 в 19:57

Другие вопросы по тегам:

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