2

Я хотел бы перечислить все каталоги и подкаталоги в и ниже текущего пути. Так как я хотел только отображать каталоги, я предложил следующую команду:

find -type d -exec ls -d1 {} \; | cut -c 3-

Это распечатывает например

webphone
music
finance
finance/banking
finance/realestate
finance/trading
finance/other
finance/moneylending
finance/insurance
webradio
webtv

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

webphone
music
finance/banking
finance/realestate
finance/trading
finance/other
finance/moneylending
finance/insurance
webradio
webtv

В этом списке каталог финансов не указан. Поэтому мне нужно ваше представление о том, как фильтровать каталоги, которые не содержат файлов (только подкаталоги).

2 ответа2

4

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

find . -type f | sed 's!/[^/]*$!!' | sort -u

Если вы хотите лишить ведущих ./:

find . -type f | sed -e 's!/[^/]*$!!' -e 's!^\./!!' | sort -u
2

Я рассматриваю установку дерева:

  • sudo apt-get установить дерево

а потом беги

  • дерево -d /path /to /start /dir

отображать только каталоги.

Пример:

root@X100e:~# tree -d /var/cache/
/var/cache/
├── apache2
│   └── mod_disk_cache
├── apt
│   └── archives
│       └── partial
├── binfmts
├── cups
│   └── rss
├── debconf
├── dictionaries-common
├── flashplugin-installer
...

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