"예쁜" 디렉토리 트리를 만들기 위한 ASCII 라이브러리?
다음과 같은 디렉토리 트리 시각화를 쉽게 작성할 수 있는 *nix 툴이나 perl/php 라이브러리가 있습니까?
www
|-- private
| |-- app
| | |-- php
| | | |-- classes
| | | +-- scripts
| | |-- settings
| | +-- sql
| +-- lib
| +-- ZendFramework-HEAD
+-- public
|-- css
|-- images
+-- scripts
Unix Tree / Linux Tree의 다음 예시는 어떻습니까.
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
그 오닐라이너는 꽤 멋져요, 나무 사용법을 추천합니다.
bash-3.2$ mkdir -p this/is/some/nested/example
bash-3.2$ mkdir -p this/is/another/super/nested/example
bash-3.2$ mkdir -p this/is/yet/another/example
bash-3.2$ mkdir -p this/is/some/nested/other/example
bash-3.2$ tree this
this
`-- is
|-- another
| `-- super
| `-- nested
| `-- example
|-- some
| `-- nested
| |-- example
| `-- other
| `-- example
`-- yet
`-- another
`-- example
13 directories, 0 files
이 질문에 대한 답은 오래전에 나왔지만, 저는 나무라는 프로그램을 발견했는데, 그것도 꽤 멋있어요.
클래스 참조
RecursiveIterator를 통해 반복하여 ASCII 그래픽 트리를 생성할 수 있습니다.
$treeIterator = new RecursiveTreeIterator(
new RecursiveDirectoryIterator('/path/to/dir'),
RecursiveTreeIterator::SELF_FIRST);
foreach($treeIterator as $val) echo $val, PHP_EOL;
출력은 다음과 같습니다(머신의 c:\php).
|-c:\php5\cfg
|-c:\php5\data
| |-c:\php5\data\Base
| | \-c:\php5\data\Base\design
| | |-c:\php5\data\Base\design\class_diagram.png
| | \-c:\php5\data\Base\design\design.txt
| |-c:\php5\data\ConsoleTools
| | \-c:\php5\data\ConsoleTools\design
| | |-c:\php5\data\ConsoleTools\design\class_diagram.png
| | |-c:\php5\data\ConsoleTools\design\console.png
| | |-c:\php5\data\ConsoleTools\design\console.xml
…
--tree가 있는 exa는 훌륭한 작업을 수행합니다.
exa --tree ~/tmp/public/
<dir>
├── aboutme
│ └── index.html
├── atrecurse
│ └── index.html
├── base.css
├── html5
│ ├── cat-and-mouse
│ └── frantic
│ ├── css
│ │ └── main.css
라이브러리 자체는 아니지만 이 작은 유틸리티는 브라우저를 떠나지 않고 빠른 트리 그래프를 생성할 때 편리합니다.https://tree.nathanfriend.io/
면책사항:저는 저자 :)입니다.
멋진 Python 스크립트: http://code.activestate.com/recipes/217212/
[http] 트리 기호를 조정하려면
<?php
$path = './targetdir';
$unicodeTreePrefix = function(RecursiveTreeIterator $tree){
$prefixParts = [
RecursiveTreeIterator::PREFIX_LEFT => ' ',
RecursiveTreeIterator::PREFIX_MID_HAS_NEXT => '+ ',
RecursiveTreeIterator::PREFIX_END_HAS_NEXT => '├ ',
RecursiveTreeIterator::PREFIX_END_LAST => '└ '
];
foreach ($prefixParts as $part => $string) {
$tree->setPrefixPart($part, $string);
}
};
$dir = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_FILENAME | RecursiveDirectoryIterator::SKIP_DOTS);
$tree = new RecursiveTreeIterator($dir);
$unicodeTreePrefix($tree);
echo "<br><br>";
echo "[$path]<br>";
foreach ($tree as $filename => $line) {
echo $tree->getPrefix(), $filename, "<br>";
}
출력 예
[./targetdir]<br> ├ aHR0cHM<br> ├ gtyyu.txt<br> ├ Screenshot at 2020-05-28 22-23-30.png<br> ├ 2004 - Synchrone<br> + ├ 09-Live for willyman.mp3<br> + ├ 04-Inabox.mp3<br> + ├ 05-Trashastan.mp3<br> + ├ 07-Nordick.mp3<br> + ├ 08-Rupture.mp3<br> + ├ Best of<br> + + ├ 08 - Civil War.mp3<br> + + ├ 09 - 14 Years.mp3<br> + + ├ 05 - Welcome To The Jungle.mp3<br> + + ├ 06 - Don't Cry.mp3<br> + + ├ 04 - Sweet Child O' Mine.mp3<br> + + ├ 02 - Paradise City.mp3<br> + + ├ 07 - Yesterdays.mp3<br> + + ├ 03 - Patience.mp3<br> + + ├ 01 - November Rain.mp3<br> + + └ 10 - Estranged.mp3<br> + ├ 03-Sarangui.mp3<br> + ├ 06-The test.mp3<br> + ├ 01-Sabradub.mp3<br> + └ 02-L'uzure.mp3<br> ├ Screenshot at 2020-02-11 12-31-52.png<br> ├ trur.txt<br> ├ .hidden<br> + ├ .sub_article.txt<br> + └ sub_article_in_hidden.txt<br> ├ gtuitre.txt<br> ├ aHR0cHM.txt<br> ├ CREEP.mp3<br> ├ subfolder<br> + └ sub_article.txt<br> ├ filtle.txt<br> ├ Best of<br> + ├ 08 - Civil War.mp3<br> + ├ 09 - 14 Years.mp3<br> + ├ 05 - Welcome To The Jungle.mp3<br> + ├ 06 - Don't Cry.mp3<br> + ├ 04 - Sweet Child O' Mine.mp3<br> + ├ 02 - Paradise City.mp3<br> + ├ 07 - Yesterdays.mp3<br> + ├ 03 - Patience.mp3<br> + ├ 01 - November Rain.mp3<br> + └ 10 - Estranged.mp3<br> ├ Screenshot at 2020-05-12 14-51-56.png<br> ├ of.txt<br> ├ highlight.css<br> └ Screenshot at 2020-06-10 19-28-51.png<br>
이것은 최근 몇 년 동안 많이 발전했다.패키지 매니저의 Linux 버전은 보다 깔끔하고 색칠되어 있습니다.
Debian/Ubuntu:
sudo apt install tree
CentOS/RHEL/OpenSUSE:
sudo yum install tree
대규모 서브디렉토리가 있는 경우current_directory
structure에 포함된 샘플만 표시하면 다음과 같은 작업을 수행할 수 있습니다.
tree -P *my_own_pattern_to_find* current_directory
언급URL : https://stackoverflow.com/questions/1581559/ascii-library-for-creating-pretty-directory-trees
'source' 카테고리의 다른 글
MySQL SELECT만 null 값이 아닙니다. (0) | 2022.11.14 |
---|---|
모델 데이터 및 동작은 어디에 배치해야 합니까?[tl;dr; 서비스 사용] (0) | 2022.11.14 |
선택 쿼리 및 'order by' 절의 MySQL 문제 (0) | 2022.11.14 |
데이터베이스 sleeve로 인해 예외가 발생함 (0) | 2022.11.14 |
오프셋 네이티브 및 오프셋 인식 데이터 시간을 뺄 수 없습니다. (0) | 2022.11.14 |