Как заставить дерево произвести только каталоги?

VAR=$VAR1 упрощенная версия VAR=${VAR1}. Существуют вещи, второе может сделать это, первое не может, например, сослаться на индекс массива (не портативный) или удалить (портативную POSIX) подстроку. Посмотрите Больше на разделе переменных Руководства Bash для Новичков и Расширения Параметра в спецификации POSIX.

Используя кавычки вокруг переменной как в rm -- "$VAR1" или rm -- "${VAR}" хорошая идея. Это делает содержание переменной атомарной единицей. Если значение переменной содержит пробелы (хорошо, символы в $IFS специальная переменная, пробелы по умолчанию) или globbing символы и Вы не заключаете его в кавычки, затем каждое слово рассматривают для поколения имени файла (globbing), чье расширение делает как много аргументов тому, что Вы делаете.

$ find .
.
./*r*
./-rf
./another
./filename
./spaced filename
./another spaced filename
./another spaced filename/x
$ var='spaced filename'
# usually, 'spaced filename' would come from the output of some command and you weren't expecting it
$ rm $var
rm: cannot remove 'spaced': No such file or directory
# oops! I just ran 'rm spaced filename'
$ var='*r*'
$ rm $var
# expands to: 'rm' '-rf' '*r*' 'another spaced filename'

$ find .
.
./another
./spaced filename
./another spaced filename
$ var='another spaced filename'
$ rm -- "$var"
$ find .
.
./another
./spaced filename

На мобильности: Согласно разделу POSIX.1-2008 2.6.2, фигурные скобки являются дополнительными.

60
01.10.2011, 14:05
3 ответа

tree в странице справочника говорится:

   -d     List directories only.

Так вывод tree -d YOUR_TARGET_FOLDER похож:

├── appengine_admin
│   ├── media
│   │   ├── images
│   │   └── js
│   └── templates
├── common
├── conf
│   └── locale
│       ├── ar
│       │   └── LC_MESSAGES
│       ├── bg
│       │   └── LC_MESSAGES
│       ├── en
│       │   └── LC_MESSAGES
│       ├── es
│       │   └── LC_MESSAGES
│       ├── fi
│       │   └── LC_MESSAGES
│       ├── fr
│       │   └── LC_MESSAGES
│       ├── ja
│       │   └── LC_MESSAGES
│       ├── pt
│       │   └── LC_MESSAGES
│       ├── ro
│       │   └── LC_MESSAGES
│       ├── ru
│       │   └── LC_MESSAGES
│       ├── sq
│       │   └── LC_MESSAGES
│       ├── sv
│       │   └── LC_MESSAGES
│       ├── tl
│       │   └── LC_MESSAGES
│       ├── tr
│       │   └── LC_MESSAGES
│       └── zh
│           └── LC_MESSAGES
├── credit
├── geo
├── js
├── mapreduce
│   ├── lib
│   │   ├── blobstore
│   │   ├── files
│   │   ├── graphy
│   │   │   └── backends
│   │   ├── key_range
│   │   ├── pipeline
│   │   │   ├── simplejson
│   │   │   └── ui
│   │   │       └── images
│   │   └── simplejson
│   ├── operation
│   └── static
├── market
├── onlinedebug
├── static
│   ├── challenge
│   ├── codebase
│   │   └── imgs
│   ├── css
│   ├── for_sale_files
│   ├── images
│   ├── images.large
│   ├── images.small
│   ├── img
│   ├── jquery-1.js
│   ├── js
│   └── yui
│       ├── assets
83
27.01.2020, 19:32
  • 1
    , для какой? –  Kevin M 01.10.2011, 18:11
  • 2
    @KevinM: страница справочника tree, Я предполагаю, что OP говорит об этом небольшом приложении, не установленном по умолчанию в моей системе, но доступном для установки. –  enzotib 01.10.2011, 18:20
  • 3
    Вы не должны действительно печатать все свое дерево... вопрос, сам объяснительный –  Zloy Smiertniy 21.02.2018, 16:51

Если Вы ищете просто простой список каталогов в этом каталоге, то Вы могли попробовать

find . -maxdepth 1 -type d

1 после maxdepth указывает, сколько уровней рекурсии Вы хотите. При поиске всех каталогов (независимо от глубины), то попробуйте

find . -type d
6
27.01.2020, 19:32
  • 1
    Это стоит упомянуть это, это - просто вопрос того, как Вы хотели бы, чтобы вывод посмотрел. –  Alexander - Reinstate Monica 17.11.2015, 01:05

Для управления глубиной дерева используйте опцию -L.

tree -d -L 2.

10
27.01.2020, 19:32

Теги

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