Unix - Список все каталоги и подкаталоги, исключая каталоги без файлов

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

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

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

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

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

2
задан 18.09.2014, 21:48

2 ответа

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

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

Если Вы хотите разделить продвижение ./:

find . -type f | sed -e 's!/[^/]*$!!' -e 's!^\./!!' | sort -u
4
ответ дан 08.12.2019, 05:29

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

  • склонные sudo - получают дерево установки

и затем выполненный

  • дерево-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
...
2
ответ дан 08.12.2019, 05:29

Теги

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