Linux & Mac

1.下载tree lib

//mac
brew install tree
//centos
yum install tree
//ubuntu
apt-get install tree

用法

//显示所有文件
tree
//显示深度2层
tree -L 2

2. 命令find组合

find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' > structure.txt

移除node_module

find . -print | grep -v "node" | sed -e 's;[^/]*/;|____;g;s;____|; |;g' > structure.txt

缺点: 不能打印深度选择,或者需要更高层次的语法编写。这里姑且先用着。够用了。

Windows

windows自带tree命令。默认只显示目录

//只显示目录
tree //显示文件
tree /f //输出到文件
tree /f > structure.txt

但,由于windows命令不熟悉,也不想花时间去学习windows的命令。那么可以装一个git shell或者推荐使用cmder。

Customization

手动写一个列表。先序遍历:

/**
* 先序遍历 postorder traversal 先输出根节点,然后输出子节点
* Created by Ryan Miao on 9/24/17.
*/
public class PostorderTraversal { @Test
public void testPostOrder() {
String root = "/Users/ryan/workspace/learning/hexo-blog-src";
int stop = 3;
ArrayList<String> ignores = Lists.newArrayList(".git", ".deploy_git", "node_modules", ".DS_Store"); printTree(root, stop, ignores);
} private void printTree(String rootFile, int stop, List<String> ignores) {
printTree(new File(rootFile), 0, stop, ignores, false, true);
} private void printTree(File rootFile, int level, int stop, List<String> ignores, boolean isLastChild, boolean isParentLast) {
String name = rootFile.getName();
if (level > stop || ignores.stream().anyMatch(name::contains)) {
return;
}
if (level == 0) {
System.out.println(".");
} else {
prettyPrint(level, rootFile, isLastChild, isParentLast);
} if (rootFile.isDirectory()) {
File[] files = rootFile.listFiles();
if (files != null) {
int length = files.length;
for (int i = 0; i < length; i++) {
if (i == length - 1) {
//
printTree(files[i], level + 1, stop, ignores, true, isLastChild);
} else {
printTree(files[i], level + 1, stop, ignores, false, isLastChild);
}
}
}
}
} private void prettyPrint(int level, File file, boolean isLastChild, boolean isParentLast) {
StringBuilder sb = new StringBuilder();
if (level != 1) {
sb.append("│");
} for (int i = 0; i < level - 2; i++) {
if (isParentLast && i == level - 3) {
sb.append(" ");
break;
}
sb.append(" |");
}
if (level != 1) {
sb.append(" ");
} if (isLastChild) {
sb.append("└──");
} else {
sb.append("├──");
} sb.append(file.getName());
System.out.println(sb.toString());
}
}

目前有个bug,就是递归到深入之后,孙子无法得知祖父是不是最终叶子,因此虚线没有去掉。不过,简单能用还是可以的。

console output:

.
├──_config.yml
├──db.json
├──package-lock.json
├──package.json
├──public
│ ├──2017
│ | ├──05
│ | ├──06
│ | ├──07
│ | ├──08
│ | └──09
│ ├──404.html
│ ├──about
│ | └──index.html
│ ├──archives
│ | ├──2017
│ | ├──index.html
│ | └──page
│ ├──baidusitemap.xml
│ ├──categories
│ | ├──Cache
│ | ├──Git
│ | ├──Hexo
│ | ├──index.html
│ | ├──Java
│ | ├──Java8
│ | ├──Javascript
│ | ├──Linux
│ | ├──MySQL
│ | ├──ReactJS
│ | ├──redis
│ | ├──Server
│ | ├──Spring
│ | ├──Tools
│ | ├──思考
│ | └──读书
│ ├──CNAME
│ ├──css
│ | └──main.css
│ ├──gallery
│ | └──index.html
│ ├──images
│ | ├──algolia_logo.svg
│ | ├──alipay.jpg
│ | ├──avatar.gif
│ | ├──avatar.jpeg
│ | ├──bk.bmp
│ | ├──bk.jpg
│ | ├──bk.png
│ | ├──bk2.jpg
│ | ├──cc-by-nc-nd.svg
│ | ├──cc-by-nc-sa.svg
│ | ├──cc-by-nc.svg
│ | ├──cc-by-nd.svg
│ | ├──cc-by-sa.svg
│ | ├──cc-by.svg
│ | ├──cc-zero.svg
│ | ├──loading.gif
│ | ├──placeholder.gif
│ | ├──quote-l.svg
│ | ├──quote-r.svg
│ | ├──searchicon.png
│ | └──wechat.jpg
│ ├──index.html
│ ├──js
│ | └──src
│ ├──lib
│ | ├──algolia-instant-search
│ | ├──canvas-nest
│ | ├──canvas-ribbon
│ | ├──fancybox
│ | ├──fastclick
│ | ├──font-awesome
│ | ├──Han
│ | ├──jquery
│ | ├──jquery_lazyload
│ | ├──pace
│ | ├──three
│ | ├──ua-parser-js
│ | └──velocity
│ ├──links
│ | └──index.html
│ ├──page
│ | ├──2
│ | └──3
│ ├──search.xml
│ ├──sitemap.xml
│ └──tags
│ ├──ArrayList
│ ├──banner
│ ├──Dropwizard
│ ├──EhCache
│ ├──Feign
│ ├──Git
│ ├──Hexo
│ ├──index.html
│ ├──Java
│ ├──Java8
│ ├──Javascript
│ ├──Lambda
│ ├──Linux
│ ├──Mac
│ ├──MySQL
│ ├──NodeJS
│ ├──ReactJS
│ ├──reading
│ ├──redis
│ ├──Server
│ ├──Spring
│ ├──SpringMVC
│ ├──team
│ ├──UTF-8
│ ├──vim
│ ├──Webpack
│ ├──Windows
│ └──码云
├──README.md
├──scaffolds
│ ├──draft.md
│ ├──page.md
│ └──post.md
├──source
│ ├──404.html
│ ├──_data
│ | └──links.yml
│ ├──_posts
│ | ├──banner-ascii-2-txt.md
│ | ├──dropwizard-feign.md
│ | ├──Ehcache3入门-Spring集成.md
│ | ├──git-rebase.md
│ | ├──hello-react-js.md
│ | ├──hello-world.md
│ | ├──hexo-github-oschina.md
│ | ├──hexo-next-hypercomments.md
│ | ├──hexo-next-shang.md
│ | ├──http-server-static.md
│ | ├──Java-ArrayList-remove.md
│ | ├──java-utf8-iso-乱码根源.md
│ | ├──java8-in-action-2.md
│ | ├──java8-lambda.md
│ | ├──js-cros.md
│ | ├──mac-install-mysql.md
│ | ├──mac-install-redis.md
│ | ├──react-tutorial-1.md
│ | ├──reading-schedule.md
│ | ├──spring400.md
│ | ├──switch-to-oschina.md
│ | ├──team-first-chance.md
│ | ├──tree.md
│ | ├──vim.md
│ | └──why-string-is-immutable.md
│ ├──about
│ | └──index.md
│ ├──categories
│ | └──index.md
│ ├──CNAME
│ ├──gallery
│ | └──index.md
│ ├──images
│ | ├──alipay.jpg
│ | ├──avatar.jpeg
│ | ├──bk.bmp
│ | ├──bk.jpg
│ | ├──bk.png
│ | ├──bk2.jpg
│ | └──wechat.jpg
│ ├──links
│ | └──index.md
│ └──tags
│ └──index.md
├──themes
│ ├──landscape
│ | ├──_config.yml
│ | ├──Gruntfile.js
│ | ├──languages
│ | ├──layout
│ | ├──LICENSE
│ | ├──package.json
│ | ├──README.md
│ | ├──scripts
│ | └──source
│ └──next
│ ├──.bowerrc
│ ├──.editorconfig
│ ├──.hound.yml
│ ├──.javascript_ignore
│ ├──.jshintrc
│ ├──.stylintrc
│ ├──.travis.yml
│ ├──_config.yml
│ ├──bower.json
│ ├──gulpfile.coffee
│ ├──languages
│ ├──layout
│ ├──LICENSE
│ ├──package.json
│ ├──README.cn.md
│ ├──README.md
│ ├──scripts
│ ├──source
│ └──test
└──thems-bak
│ └──next
│ ├──_config.yml
│ └──custom.styl

参考

mac 下的 tree 命令 终端展示你的目录树结构

命令行打印文件树列表: tree的更多相关文章

  1. Ubuntu使用命令行打印文件

    Ubuntu使用命令行打印文件 正文 环境: Ubuntu 16.04.3 LTS HP Deskjet InkAdvantage 4648 准备步骤 安装Common UNIX Printing S ...

  2. 在Linux下使用命令行打印文件

    近期需要将数学笔记打印出来复习,才发现Linux KDE环境下的默认PDF软件Okular根本无法将我在GoodNotes B5大小的页面写下的内容自适应地放大到A4纸上,只能以页面的原始尺寸打印.然 ...

  3. 分布式进阶(十) linux命令行下载文件以及常用工具:wget、Prozilla、MyGet、Linuxdown、Curl、Axel

    linux命令行下载文件以及常用工具:wget.Prozilla.MyGet.Linuxdown.Curl.Axel 本文介绍常用的几种命令行式的下载工具:wget.Prozilla.MyGet.Li ...

  4. Linux基础命令---lp打印文件

    lp lp指令用来打印文件,也可以修改存在的打印任务.使用该指令可以指定打印的页码.副本等. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.openSUSE.SU ...

  5. Linux基础命令---lpr打印文件

    lpr lpr指令用来打印文件,如果没有指定文件名,那么从标准输入读取内容.CUPS提供了许多设置默认目标的方法.首先查询“LPDEST”和“PRINTER”环境变量.如果没有设置,则使用lpopti ...

  6. FileZilla命令行实现文件上传以及CreateProcess实现静默调用

    应用需求:         用户在选择渲染作业时面临两种情况:一是选择用户远程存储上的文件:二是选择本地文件系统中的文件进行渲染.由于渲染任务是在远程主机上进行的,实际进行渲染时源文件也是在ftp目录 ...

  7. Linux进程-命令行参数和环境列表

    命令行参数 在C中,main函数有很多的变种,比如 main(), int main(), int main(int argc, char *argv[]), int main(int argc, c ...

  8. Windows中通过命令行新建文件夹、新建文件,和一些常用命令

    新建文件 和Linux不太一样,Linux中的touch和vi命令创建新文件的方法都不能用了,在windows命令行下得用type nul>文件名.后缀名来创建: F:\study\vue\wo ...

  9. 使用SSH命令行传输文件到远程服务器

    以前一直在windows下用SSH Secure Shell连接远程服务器,它自带了一个可视化的文件传输工具,跟ftp差不多 但是它也存在一个缺陷,不支持编码的选择,遇到utf8就自动乱码了,另外ma ...

随机推荐

  1. BZOJ3009 : 集合

    取一棵生成森林,根据题目限制可得,与一个点相连的多余的边数是$O(\sqrt{m})$级别的. 对于树边,每个点维护3棵权值线段树,依次保存它的儿子里各个集合的边. 再开3*3个分块数组,记录多余边以 ...

  2. Codeforces Round #375 (Div. 2) F. st-Spanning Tree 生成树

    F. st-Spanning Tree 题目连接: http://codeforces.com/contest/723/problem/F Description You are given an u ...

  3. 如何利用JS判断当前来路域名并跳转到指定页面

    1.如何利用JS判断当前来路域名并跳转到指定页面 获取当前请求路径var href = location.href ;if(href.indexOf("baidu")>-1) ...

  4. java 虚拟机启动参数 (转)

    在Java.J2EE大型应用中,JVM非标准参数的配置直接关系到整个系统的性能. JVM非标准参数指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置.但是在生产环境中,为了提 ...

  5. MongoDB的Java驱动使用整理 (转)

    MongoDB Java Driver 简单操作 一.Java驱动一致性 MongoDB的Java驱动是线程安全的,对于一般的应用,只要一个Mongo实例即可,Mongo有个内置的连接池(池大小默认为 ...

  6. LayoutInflater作用及使用(转)

    作用: 1.对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入. 2.对于一个已经载入的Activity, 就可以使用实现了这个Activiyt的的findViewById方法 ...

  7. 视频监控系统:C/S &amp; B/S

    近期一直和视频监控打交道.也做了大量的工作.当中包括了监控系统的两种模式实现: 1.C/S架构 C/S架构,主要是Android系统下监控client设计,基于VLC实现,可直接观看IP摄像机RTSP ...

  8. linux设置命令行启动

    做spark,内存大的话运行很快,否则运行很慢,主节点用界面,其他用命令行,然后scp,或者ssh 去其他主机最访问 1, 关闭图形界面: [root@bogon ~]# init 3   // 关闭 ...

  9. Eclipse 保存文件时自动格式化代码

    很多同学不知道Eclipse有个很有用的功能,就是自动格式源代码的功能,一般大家都是直接Ctrl+Shift+F手动格式化,多浪费时间. 其实Eclipse里已经带有自动格式化功能了,默认是没有代开该 ...

  10. 每天定时备份mysql数据库任务

    需求: 1,每天4点备份mysql数据: 2,为节省空间,删除超过3个月的所有备份数据: 3,删除超过7天的备份数据,保留3个月里的 10号 20号 30号的备份数据: #创建shell文件 vim ...