program.command('find <name>').action(name => {
if (name) {
inquirer
.prompt([
{
type: 'input',
name: 'isAll',
message: '输入的文件名是否是文件全称 yes/no',
validate(input) {
let arr = ['yes', 'no'];
if (!arr.includes(input)) {
return '请输入yes/no';
}
return true;
}
}
])
.then(answers => {
const spinner = ora(`正在寻找${name}...`);
spinner.start();
try {
let isAll = answers.isAll === 'yes'; // 是否为全称
let files = []; // 找到文件名的路径存储
// 递归遍历目录下的文件
function readDirSync(path) {
var pa = fs.readdirSync(path);
pa.forEach(function(ele, index) {
var info = fs.statSync(path + '/' + ele);
if (info.isDirectory()) {
readDirSync(path + '/' + ele);
} else {
if((!isAll && ele.includes(name)) || (isAll && ele === name)) {
files.push(path + '/' + ele);
}
}
});
}
readDirSync('.');
if (files.length > 0) {
spinner.succeed();
files = files.join('\n');
console.log(symbols.success, chalk.green('文件已找到,文件路径如下:\n' + files));
} else {
spinner.fail();
console.log(symbols.error, chalk.red(`该目录下未含有名为'${name}'的文件`));
}
} catch (error) {
console.log(symbols.error, chalk.red(error));
spinner.fail();
console.log(symbols.error, chalk.red('在寻找文件过程出错'));
}
});
} else {
console.log(
symbols.error,
chalk.red('请输入完整命令:xinsir find xx(寻找的文件名)')
);
}
});
program.parse(process.argv);

效果如下:

【xinsir】分享一个查找文件的脚手架的更多相关文章

  1. 分享一个PHP文件上传类

    该类用于处理文件上传,可以上传一个文件,也可以上传多个文件. 包括的成员属性有: private $path = "./uploads"; //上传文件保存的路径 private ...

  2. 分享一个查找linux命令的网站

    http://man.linuxde.net/ 不用每次都找度娘浪费时间了    

  3. 分享一个mysql服务启动与关闭的bat文件

    有时候打开数据库可视化工具(sqlyog.navicat)连接数据库时,会出现以下报错信息. 大家都知道是数据库的服务没有启动. 所以我想给大家分享一个bat文件可供快速启动mysql的数据库的服务, ...

  4. 分享一个CQRS/ES架构中基于写文件的EventStore的设计思路

    最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event Sourcing这种架构,我博客 ...

  5. 分享一个批量修改文件编码的python脚本

    分享一个自己编写的递归查找子目录,将所有cpp文件编码修改为utf-8编码格式的小脚本 #i!/usr/bin/env python3 # -*- coding:utf-8 -*- import os ...

  6. 分享一个vue项目“脚手架”项目的实现步骤

    搭建缘由 源于公司每次新启动一个由多人协同开发的项目都由负责人初始化项目之后,每个人再去从私服pull一下项目才开始开发.但是每次初始化工程都是一步步的造轮子,一个个依赖去安装,新建一个个不同功能的文 ...

  7. 每天学习一个命令:find 查找文件

    查找的动作在平时使用的频率也还是很高的,所以知道并用好 find 这个命令也很重要.find 命令顾名思义,就是搜索特定文件夹内的文件. 基本使用 最基本的使用 find [path] [expres ...

  8. Confluence 6 分享一个文件

    协同合作和编辑不仅仅是发生在页面中,很多时候你需要与你的项目小组针对文档,报告,图片,表格进行协同操作.不管是针对性的市场计划或者一个完整的项目计划,你可以在 Confluence 中让你的项目小组成 ...

  9. 查找一个Class到底在那一个jar文件里

    整理自己的一些笔记,发觉这个命令 ,看起来是用来找一个Class到底在那一个jar文件里的. 虽然没有再测一下,估计是好使的. 先在博客园里记下来,防止自己忘掉. findstr /S /M org. ...

随机推荐

  1. python 列表,集合,字典,字符串的使用

    PY PY基础 append 在末尾添加元素 pop 删除末尾元素 insert(i,item)在i位插入元素 pop(i)删除i位元素 只有1个元素的tuple定义时必须加一个逗号,,来消除歧义 i ...

  2. 实现一个3D图片轮播插件 —— 更新版

    前言:     前段时间写下了之前那篇 3D图片轮播效果,后来发现了 Pedro Botelho 写的jquery.gallery.js ,于是重新修改了自己的这个图片轮播,使之可以成为一个插件来使用 ...

  3. Python3 学习笔记之 类型/运算符

    类型/运算符: 类型: 整数 字符串 浮点数 布尔类型 类型转换: 检查类型: 算术操作符: 逻辑操作符: 优先级:

  4. Tensorflow-gpu1.13.1 和 Tensorflow-gpu2.0.0共存之安装教程

    tf1.13.1 及 tf2.0.0  相关依赖及版本 硬件说明:显卡NVIDIA-GEFORCE-GTX-1060 1.驱动版本检查,并且更新显卡驱动[这一步很重要,你的驱动版本低了,cuda及cu ...

  5. hibernate 搭建框架

    需要用的包 Hibernate的日志记录: * Hibernate日志记录使用了一个slf4j: * SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具 ...

  6. STM32进阶之串口环形缓冲区实现

    队列的概念 在此之前,我们来回顾一下队列的基本概念: 队列 (Queue):是一种先进先出(First In First Out ,简称 FIFO)的线性表,只允许在一端插入(入队),在另一端进行删除 ...

  7. Oracle VM VirtualBOX桥接网卡

    1.在VirtualBOX设置中的网络菜单,连接方式选择桥接网卡 2.启动系统,设置静态IP sudo vim /etc/network/interfaces auto enp0s3         ...

  8. Java的Object类

    (1)Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类. (2)Object类的构造方法有一个,并且是无参构造 这其实就是理解当时我们说过,子类构造方法默认访问父类的构造是 ...

  9. typescript 入门教程一

    ##### 从今天开始,持续更新typescript入门教程系列.... 目前ts越来越火,主流的前端框架,好比*angular,vue 3*均是采用ts来编写,所有很多公司的项目都是用**ts**来 ...

  10. react - 组件间的值传递

    父组件向子组件传值 父组件通过属性进行传递,子组件通过props获取 //父组件 class CommentList extends Component{ render(){ return( < ...