- Linux command to print directory structure in the form of a tree
- 11 Answers 11
- Как создать дерево каталогов в Linux?
- Как создать дерево каталогов?
- Как мне создать структуру каталогов в Linux?
- Что такое дерево каталогов Linux?
- Как показать дерево каталогов в Linux?
- Как мне копировать каталоги в Linux?
- Как мне создать каталог в Unix?
- Как мне составить список каталогов в Linux?
- Как создать каталог в терминале Linux?
- Как копировать файлы в Linux?
- Какова структура каталогов в Linux?
- Как мне вывести список всех файлов в каталоге в Linux?
- Похожие сообщения:
Linux command to print directory structure in the form of a tree
Just run find . Or find . -not -path ‘*/\.*’ to hide files and folders starting with . . If you want to have output with spaces, as in the question, use it with this «find prettifier» script: find . -not -path ‘*/\.*’ | python -c «import sys as s;s.a=[];[setattr(s,’a’,list(filter(lambda p: c.startswith(p+’/’),s.a)))or (s.stdout.write(‘ ‘*len(s.a)+c[len(s.a[-1])+1 if s.a else 0:])or True) and s.a.append(c[:-1]) for c in s.stdin]»
The policy of closing questions without migrating is harmful to both stackoverflow and human knowledge in general. In the last 3 days, every single questions I googled and came across was closed for similar reasoning, and no more activity was able to happen. This means no one can update it, no one can give a better answer, and it makes stackoverflow look shortsighted or elitist. Stackoverflow should consider requiring a migration when a topic is found to have these conditions.
I agree with @NickYeates I am here in late September of 2017 still finding answers to this same question. Think long term when we design these question and answer policies!
11 Answers 11
Is this what you’re looking for tree? It should be in most distributions (maybe as an optional install).
~> tree -d /proc/self/ /proc/self/ |-- attr |-- cwd -> /proc |-- fd | `-- 3 -> /proc/15589/fd |-- fdinfo |-- net | |-- dev_snmp6 | |-- netfilter | |-- rpc | | |-- auth.rpcsec.context | | |-- auth.rpcsec.init | | |-- auth.unix.gid | | |-- auth.unix.ip | | |-- nfs4.idtoname | | |-- nfs4.nametoid | | |-- nfsd.export | | `-- nfsd.fh | `-- stat |-- root -> / `-- task `-- 15589 |-- attr |-- cwd -> /proc |-- fd | `-- 3 -> /proc/15589/task/15589/fd |-- fdinfo `-- root -> / 27 directories
sample taken from maintainer’s web page.
You can add the option -L # where # is replaced by a number, to specify the max recursion depth.
Remove -d to display also files.
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
It will show a graphical representation of the current sub-directories without files in a few seconds, e.g. in /var/cache/ :
. |-apache2 |---mod_cache_disk |-apparmor |-apt |---archives |-----partial |-apt-xapian-index |---index.1 |-dbconfig-common |---backups |-debconf
If you want it with spaces, more like the OP requested, then this: ls -R | grep «:$» | sed -e ‘s/:$//’ -e ‘s/[^-][^\/]*\// /g’ -e ‘s/^/ /’
@Ben thanks for that, all other (non- tree ) answers produce a result that does not look perfectly correct to me. For example in this answer, there should be a line going down from apt then horizontally to archives , instead it comes down from . and goes to archives , only because of more indentation you can guess that it’s actually a subfolder of apt . So you could as well just leave the lines away, it’s at least not misleading then.
This command works to display both folders and files.
. |-trace.pcap |-parent | |-chdir1 | | |-file1.txt | |-chdir2 | | |-file2.txt | | |-file3.sh |-tmp | |-json-c-0.11-4.el7_0.x86_64.rpm
Source: Comment from @javasheriff here. Its submerged as a comment and posting it as answer helps users spot it easily.
for python3 I found find . |grep -vE ‘pyc|swp|__init’ | sed -e «s/[^-][^\/]*\// |/g» -e «s/|\([^ ]\)/|-\1/» working well
This was a great help as we didn’t have tree installed on a certain server. This will most likely work on any standard Linux system.
Since it was a successful comment, I am adding it as an answer:
To print the directory structure in the form of a tree,
WITH FILES
If you would like to sort your result list then combine the nice solution above with sort this way: find . | sort | sed -e «s/[^-][^\/]*\// |/g» -e «s/|\([^ ]\)/|-\1/»
To add Hassou’s solution to your .bashrc, try:
alias lst='ls -R | grep ":$" | sed -e '"'"'s/:$//'"'"' -e '"'"'s/[^-][^\/]*\//--/g'"'"' -e '"'"'s/^/ /'"'"' -e '"'"'s/-/|/'"'"
Nice alias. But there is missing ‘ ‘ (2 single quote chars) at the end. It works even without it, but. if you want to add some more commands at the end you will see the literal is not complete. So it should go alias lst=’ls -R | grep «:$» | sed -e ‘»‘»‘s/:$//'»‘»‘ -e ‘»‘»‘s/[^-][^\/]*\//—/g'»‘»‘ -e ‘»‘»‘s/^/ /'»‘»‘ -e ‘»‘»‘s/-/|/'»‘»»
Since I was not too happy with the output of other (non- tree ) answers (see my comment at Hassou’s answer), I tried to mimic tree s output a bit more.
It’s similar to the answer of Robert but the horizontal lines do not all start at the beginning, but where there are supposed to start. Had to use perl though, but in my case, on the system where I don’t have tree , perl is available.
ls -aR | grep ":$" | perl -pe 's/:$//;s/[^-][^\/]*\// /g;s/^ (\S)/└── \1/;s/(^ | (?= ))/│ /g;s/ (\S)/└── \1/'
. └── fd └── net │ └── dev_snmp6 │ └── nfsfs │ └── rpc │ │ └── auth.unix.ip │ └── stat │ └── vlan └── ns └── task │ └── 1310 │ │ └── net │ │ │ └── dev_snmp6 │ │ │ └── rpc │ │ │ │ └── auth.unix.gid │ │ │ │ └── auth.unix.ip │ │ │ └── stat │ │ │ └── vlan │ │ └── ns
Suggestions to avoid the superfluous vertical lines are welcome 🙂
I still like Ben’s solution in the comment of Hassou’s answer very much, without the (not perfectly correct) lines it’s much cleaner. For my use case I additionally removed the global indentation and added the option to also ls hidden files, like so:
ls -aR | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\// /g'
Output (shortened even more):
. fd net dev_snmp6 nfsfs rpc auth.unix.ip stat vlan ns
Источник
Как создать дерево каталогов в Linux?
Чтобы создать новый каталог с несколькими подкаталогами, вам нужно только ввести следующую команду в командной строке и нажать Enter (очевидно, измените имена каталогов на то, что вы хотите). Флаг -p указывает команде mkdir сначала создать главный каталог, если он еще не существует (в нашем случае это htg).
Как создать дерево каталогов?
Создание всего дерева каталогов может быть выполнено с помощью команды mkdir, которая (как следует из названия) используется для создания каталогов. Параметр -p указывает mkdir создать не только подкаталог, но и все его родительские каталоги, которые еще не существуют.
Как мне создать структуру каталогов в Linux?
- Команда mkdir в Linux / Unix позволяет пользователям создавать или создавать новые каталоги. …
- Создание структуры с несколькими подкаталогами с использованием mkdir требует добавления опции -p. …
- Команда mkdir по умолчанию дает разрешения rwx только текущему пользователю.
Что такое дерево каталогов Linux?
Дерево каталогов — это иерархия каталогов, состоящая из одного каталога, называемого родительским каталогом или каталогом верхнего уровня, и всех уровней его подкаталогов (т.е. каталогов внутри него). … Unix-подобные операционные системы имеют единственный корневой каталог, из которого происходят все остальные деревья каталогов.
Как показать дерево каталогов в Linux?
Вам нужно использовать команду tree. Он отобразит содержимое каталогов в древовидном формате. Это рекурсивная программа для вывода списка файлов, которая выводит список файлов с глубоким отступом. Когда указаны аргументы каталога, дерево по очереди перечисляет все файлы и / или каталоги, найденные в данных каталогах.
Как мне копировать каталоги в Linux?
Чтобы скопировать каталог в Linux, вы должны выполнить команду «cp» с параметром «-R» для рекурсии и указать исходный и целевой каталоги для копирования. В качестве примера предположим, что вы хотите скопировать каталог «/ etc» в резервную папку с именем «/ etc_backup».
Как мне создать каталог в Unix?
- mkdir dirname — создать новый каталог.
- cd dirname — сменить каталог. Вы в основном «переходите» в другой каталог, и вы увидите файлы в этом каталоге, когда выполните «ls». …
- pwd — сообщает, где вы сейчас находитесь.
Как мне составить список каталогов в Linux?
Linux или UNIX-подобная система использует команду ls для вывода списка файлов и каталогов. Однако в ls нет возможности отображать только каталоги. Вы можете использовать комбинацию команд ls и grep только для вывода списка имен каталогов. Вы также можете использовать команду поиска.
Как создать каталог в терминале Linux?
Создание файла с помощью сенсорной команды
Самый простой способ создать новый файл в Linux — использовать сенсорную команду. Команда ls выводит список содержимого текущего каталога. Поскольку никакой другой каталог не был указан, команда touch создала файл в текущем каталоге.
Как копировать файлы в Linux?
Копирование файлов с помощью команды cp
В операционных системах Linux и Unix команда cp используется для копирования файлов и каталогов. Если целевой файл существует, он будет перезаписан. Чтобы получить запрос на подтверждение перед перезаписью файлов, используйте параметр -i.
Какова структура каталогов в Linux?
Каталог | Описание |
---|---|
/ opt | Дополнительные пакеты прикладного программного обеспечения. |
/ proc | Виртуальная файловая система, предоставляющая информацию о процессах и ядре в виде файлов. В Linux соответствует монтированию procfs. Как правило, автоматически генерируется и заполняется системой на лету. |
/ root | Домашний каталог для пользователя root. |
Как мне вывести список всех файлов в каталоге в Linux?
- Чтобы вывести список всех файлов в текущем каталоге, введите следующее: ls -a Это список всех файлов, включая. точка (.)…
- Чтобы отобразить подробную информацию, введите следующее: ls -l chap1.profile. …
- Чтобы отобразить подробную информацию о каталоге, введите следующее: ls -d -l.
Похожие сообщения:
- Частый вопрос: Как мне найти дерево файлов в Linux?Вопрос: Как создать каталог в Linux? Как мне создать иерархическое дерево каталогов в Unix? Что такое дерево каталогов Linux? Вы спросили: Как мне показать дерево каталогов в Linux? Как создать древовидную структуру в Unix?
Источник