热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【xinsir】分享一个查找文件的脚手架

1program.command('find').action(name{2if(name){3inquirer4.prompt([5{6type:&

1 program.command(‘find ‘).action(name => {
2 if (name) {
3 inquirer
4 .prompt([
5 {
6 type: ‘input‘,
7 name: ‘isAll‘,
8 message: ‘输入的文件名是否是文件全称 yes/no‘,
9 validate(input) {
10 let arr = [‘yes‘, ‘no‘];
11 if (!arr.includes(input)) {
12 return ‘请输入yes/no‘;
13 }
14 return true;
15 }
16 }
17 ])
18 .then(answers => {
19 const spinner = ora(`正在寻找${name}...`);
20 spinner.start();
21 try {
22 let isAll = answers.isAll === ‘yes‘; // 是否为全称
23 let files = []; // 找到文件名的路径存储
24 // 递归遍历目录下的文件
25 function readDirSync(path) {
26 var pa = fs.readdirSync(path);
27 pa.forEach(function(ele, index) {
28 var info = fs.statSync(path + ‘/‘ + ele);
29 if (info.isDirectory()) {
30 readDirSync(path + ‘/‘ + ele);
31 } else {
32 if((!isAll && ele.includes(name)) || (isAll && ele === name)) {
33 files.push(path + ‘/‘ + ele);
34 }
35 }
36 });
37 }
38 readDirSync(‘.‘);
39 if (files.length > 0) {
40 spinner.succeed();
41 files = files.join(‘\n‘);
42 console.log(symbols.success, chalk.green(‘文件已找到,文件路径如下:\n‘ + files));
43 } else {
44 spinner.fail();
45 console.log(symbols.error, chalk.red(`该目录下未含有名为‘${name}‘的文件`));
46 }
47 } catch (error) {
48 console.log(symbols.error, chalk.red(error));
49 spinner.fail();
50 console.log(symbols.error, chalk.red(‘在寻找文件过程出错‘));
51 }
52 });
53 } else {
55 console.log(
56 symbols.error,
57 chalk.red(‘请输入完整命令:xinsir find xx(寻找的文件名)‘)
58 );
59 }
60 });
61 program.parse(process.argv);

效果如下:

技术分享图片

 

 


推荐阅读
  • Node.js 入门指南(一)
    本文介绍了Node.js的安装步骤、如何创建第一个应用程序、NPM的基本使用以及处理回调函数的方法。通过实际操作示例,帮助初学者快速掌握Node.js的基础知识。 ... [详细]
  • NameNode内存优化基于缓存相同文件名的方法
    NameNode内存优化基于缓存相同文件名的方法Namenodeheapoptimizationreuseobjectsforcommonlyuse ... [详细]
  • 1.2 行筛选技巧
    面对一张数据表时,若需仅查看符合特定条件的数据行,了解如何高效地进行行筛选至关重要。本文将介绍利用常见的逻辑运算符及组合条件实现精准筛选的方法。 ... [详细]
  • 本章探讨了使用固定数组实现栈和队列的基本方法,以及如何通过这些基本结构来实现更复杂的操作,如获取栈中的最小值。此外,还介绍了如何利用栈来模拟队列的行为,反之亦然。 ... [详细]
  • 本文介绍了一种SQL查询方法,用于将表中的行数据转换为列显示,特别是当需要根据特定条件聚合不同字段的数据时。通过使用子查询和GROUP BY语句,可以有效地实现这一转换。 ... [详细]
  • 本文详细介绍了Linux操作系统中的cp和scp命令,包括它们的基本使用方法、常见选项以及如何通过scp命令安全地在不同主机之间传输文件。 ... [详细]
  • VMware Horizon View 5.0桌面虚拟化部署实践与心得
    在近期的研究中,我花费了大约两天时间成功部署了桌面虚拟化环境,并在此过程中积累了一些宝贵的经验。本文将分享这些经验和部署细节,希望能对同样关注桌面虚拟化的同行有所帮助。 ... [详细]
  • 本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。 ... [详细]
  • Photoshop打造炫酷金色锈迹立体文字
    本文介绍如何使用Photoshop创建具有金属质感和锈迹效果的立体文字。通过叠加多个带有特定图层样式的文字图层,结合火焰背景,营造出独特的视觉冲击力。 ... [详细]
  • 地球坐标、火星坐标及百度坐标间的转换算法 C# 实现
    本文介绍了WGS84坐标系统及其精度改进历程,探讨了火星坐标系统的安全性和应用背景,并详细解析了火星坐标与百度坐标之间的转换算法,提供了C#语言的实现代码。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
  • 在Kubernetes集群中部署Kuboard
    本文详细介绍了如何在Kubernetes(简称k8s)环境中部署Kuboard,包括必要的命令和步骤,帮助用户顺利完成安装。 ... [详细]
  • 本文介绍了两种获取和研究 .NET Framework 源代码的有效途径:一是通过官方提供的下载链接获取完整源代码,并使用 Visual Studio 进行本地查看;二是利用在线资源平台,直接在网页上浏览源代码。 ... [详细]
  • 深入理解Python中的sorted高阶函数
    排序是编程中常见的需求,无论是简单的数字排序还是复杂的对象排序,其核心都是比较两个元素。本文将探讨如何利用Python的高阶函数`sorted()`,通过自定义键函数来实现灵活多样的排序逻辑。 ... [详细]
  • [Head First设计模式笔记]命令模式
    命令模式定义:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。类图:适用设计方案举例:实现一种遥控器,该遥控器具有七个可编程的插 ... [详细]
author-avatar
手机用户2502905381
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有