CN111045991B - 一种基于命令行模式快速打开文件的实现方法 - Google Patents

一种基于命令行模式快速打开文件的实现方法 Download PDF

Info

Publication number
CN111045991B
CN111045991B CN201911215387.1A CN201911215387A CN111045991B CN 111045991 B CN111045991 B CN 111045991B CN 201911215387 A CN201911215387 A CN 201911215387A CN 111045991 B CN111045991 B CN 111045991B
Authority
CN
China
Prior art keywords
file
match
matching
dir
directory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911215387.1A
Other languages
English (en)
Other versions
CN111045991A (zh
Inventor
林志强
杨厚杜
赖映青
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHENZHEN DINGTAIFU TECHNOLOGY CO LTD
Original Assignee
SHENZHEN DINGTAIFU TECHNOLOGY CO LTD
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SHENZHEN DINGTAIFU TECHNOLOGY CO LTD filed Critical SHENZHEN DINGTAIFU TECHNOLOGY CO LTD
Priority to CN201911215387.1A priority Critical patent/CN111045991B/zh
Publication of CN111045991A publication Critical patent/CN111045991A/zh
Application granted granted Critical
Publication of CN111045991B publication Critical patent/CN111045991B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/168Details of user interfaces specifically adapted to file systems, e.g. browsing and visualisation, 2d or 3d GUIs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/156Query results presentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于命令行模式快速打开文件的实现方法,包括以下步骤:步骤S1,打开文件,查找列表缓存文件,若不存在缓存文件则跳转至步骤S2,若存在缓存文件则跳转至步骤S3;步骤S2,遍历源码树下的所有文件,将这些文件的列表缓存文件保存起来;步骤S3,针对用户所需要打开的文件名,在列表缓存文件中搜索,查找匹配包含该文件名的目录;步骤S4,根据匹配结果进行第一次决策,找到文件名匹配的目录;步骤S5,遍历所述目录下的所有文件进行第二次决策。本发明在运行程序之后,只要匹配到所需要打开的文件的完整文件名或完整文件名的一部分,就可以直接打开该文件,进而能够让命令行操作人员快速打开该文件,大幅度提高工作效率。

Description

一种基于命令行模式快速打开文件的实现方法
技术领域
本发明涉及一种打开文件的方法,尤其涉及一种基于命令行模式快速打开文件的实现方法。
背景技术
命令行是程序员和机器进行交互的常用手段,Windows操作系统提供了控制台窗口可以进行命令操作,而Linux或类Unix等操作系统,命令行因为其轻量,高效等特点,其操作的使用频度甚至超过了图形界面的使用。特别对于Linux操作系统为主的服务器,工程师一般都是通过基于命令行的远程登录工具来登录服务器,运行命令。因为不需要图形桌面,所以网络带宽占用低,对于开发运维等某些场景,操作高效。因此,尽管在如今人机交互都是图像化的时代,命令行的操作还是不可避免,对于资深的专业人员,命令行操作甚至更受青睐。
现有技术中,基于命令行的文件打开操作,一般的做法是进入到该文件所在的目录,然后通过文件名打开该文件。或者不进入文件所在的目录,而是打开文件时,通过给出绝对路径或相对路径的方式来打开文件。以上两种操作,第1种需要用户提前先进入文件所在的目录,而第2种尽管不需要预先进入文件的目录,但需要提供文件的路径,操作上同样不够高效。特别是在文件集存在几十万甚至更多的数量级时,我们不可能记住每个文件所在的路径,这种情况就不可能直接运用前面的两种方法。而是要提前搜索文件的路径,而对于文件集庞大的情况,搜索耗时一般都在秒级以上,甚至几十秒,这样就非常影响工作效率。
发明内容
本发明所要解决的技术问题是需要提供一种能够有效提高工作效率的基于命令行模式快速打开文件的实现方法。
对此,本发明提供一种基于命令行模式快速打开文件的实现方法,包括以下步骤:
步骤S1,打开文件,查找列表缓存文件,若不存在缓存文件则跳转至步骤S2,若存在缓存文件则跳转至步骤S3;
步骤S2,遍历源码树下的所有文件,将这些文件的列表缓存文件保存起来;
步骤S3,针对用户所需要打开的文件名,在列表缓存文件中搜索,查找匹配包含该文件名的目录;
步骤S4,根据匹配结果进行第一次决策,找到文件名匹配的目录;
步骤S5,进入目录,遍历所述目录下的所有文件进行第二次决策,打开用户所需要打开的文件。
本发明的进一步改进在于,所述步骤S3包括以下子步骤:
步骤S301,以只读模式打开缓存文件,定义第一匹配数组temp_match_dir[i],索引初始化为0;
步骤S302,逐行读取所述缓存文件,并在读取的每一行数据中匹配所需要打开的文件名,直到到达所述缓存文件的末尾则结束;
步骤S303,关闭缓存文件。
本发明的进一步改进在于,所述步骤S302中,在读取的每一行数据中匹配所需要打开的文件名的过程如下:
步骤S3021,将读取到的本行数据存储到字符串变量中;
步骤S3022,通过分隔符分割所述字符串变量,每一个分隔符表示一个目录层级,通过所述字符串变量得到每级子目录名称,其中,所述子目录名称的最后一个元素则为文件名;
步骤S3023,在所述子目录名称的最后一个元素中匹配所需要打开的文件名,如果匹配成功则将其路径记录到所述第一匹配数组temp_match_dir[i]中,并将所述第一匹配数组temp_match_dir[i]的索引i进行加1操作。
本发明的进一步改进在于,所述步骤S4中,根据匹配结果进行第一次决策的过程如下:
步骤S401,如果第一匹配数组temp_match_dir[i]中没有任何有效元素,则没有找到匹配目标,提示用户输入的文件名找不到;
步骤S402,如果第一匹配数组temp_match_dir[i]中有且只有1个有效元素,则直接进入第一匹配数组temp_match_dir[i],i=1所指向的目录;
步骤S403,如果第一匹配数组temp_match_dir[i]中有两个以上有效元素,则显示出各目录并对各目录编号输出,编号即为第一匹配数组temp_match_dir[i]的下标i,通过输入编号得到此元素值。
本发明的进一步改进在于,所述步骤S403中,如果第一匹配数组temp_match_dir[i]中有至少两个有效元素,则先进行元素去重处理,然后再显示出各目录并对各目录编号输出。
本发明的进一步改进在于,所述步骤S403中的元素去重处理包括以下子步骤:
步骤S4031,初始化所述第一匹配数组temp_match_dir[i]的索引i为0,定义第二匹配数组match_dir[j]作为去重处理后的匹配数组,并初始化所述第二匹配数组match_dir[j]的索引j为0;
步骤S4032,将所述第一匹配数组temp_match_dir[i]赋值至所述第二匹配数组match_dir[j]中;
步骤S4033,比较当前索引的第一匹配数组temp_match_dir[i]和下一索引的第一匹配数组temp_match_dir[i+1]中的数据,如果字符串值相等,索引i自增1;如果不相等,索引i和索引j各自增1,将当前索引的第一匹配数组temp_match_dir[i]赋值到第二匹配数组match_dir[j]中;
步骤S4034,重复执行步骤S4033,直到索引i达到最后一个元素,则退出元素去重处理。
本发明的进一步改进在于,所述步骤S5包括以下子步骤:
步骤S501,进入目录,遍历所述目录下的所有文件,匹配用户所需要打开的文件名,将匹配文件名记录到第三匹配数组match_file[n]中,n为第三匹配数组match_file[n]的索引,所述第三匹配数组match_file[n]中的每个元素用于保存字符串变量的指针;
步骤S502,如果第三匹配数组match_file[n]里没有有效元素,则找不到匹配的文件名,提示用户没找到文件,结束程序;
步骤S503,如果第三匹配数组match_file[n]里有且只有一个非空指针,则直接通过linux系统的文本编辑器打开第三匹配数组match_file[n]中n=0的指针所指向的文件,结束程序;
步骤S504,如果第三匹配数组match_file[n]里有两个以上非空指针,则打印各非空指针所指向的字符串名称,并通过索引n实现编号输出,提示用户选择;在用户输入对应的索引n的编号后,通过linux系统的文本编辑器打开对应指向的文件,结束程序。
本发明的进一步改进在于,所述步骤S2包括以下子步骤:
步骤S201,创建列表缓存文件,并设置其初始内容为空;
步骤S202,进入源码树目录,按字母编排顺序遍历所述源码树目录下的所有子目录和文件;
步骤S203,对于遍历出来的文件,获取该文件的文件类型和文件名,并将该文件的路径添加到列表缓存文件中,然后添加回车换行符,将下一个文件的文件类型、文件名以及路径存储到下一行;
步骤S204,对于遍历出来的子目录,判断所述子目录是否为被忽略的对象,如果不是,则进入此子目录;
步骤S205,重复调用执行步骤S202至步骤S204,直到目录为空或者不再有子目录。
本发明的进一步改进在于,当源码树中有文件被删除或者创建新的文件时,根据用户的设置重新生成和保存列表缓存文件。
本发明的进一步改进在于,重新生成和保存列表缓存文件的过程为:删除当前的列表缓存文件,在下次运行时进入步骤S2重新生成和保存新的列表缓存文件。
与现有技术相比,本发明的有益效果在于:运行程序之后,只要匹配到所需要打开的文件的完整文件名或者完整文件名的一部分,就可以直接打开该文件,进而能够让命令行操作人员快速定位和打开所需要的文件,大幅度提高工作效率。本发明能够有效避免用户因为不知道文件路径,需要预先搜索文件所在的路径后再去手动打开等耗时且麻烦的操作,本发明可以达到秒级以下的文件打开响应时间,当存在多个匹配文件时,还可以实时反馈给用户,让用户选择匹配文件来实现打开。
附图说明
图1是本发明一种实施例的工作流程示意图;
图2是本发明一种实施例的详细工作流程示意图。
具体实施方式
下面结合附图,对本发明的较优的实施例作进一步的详细说明。
如图1和图2所示,本例提供一种基于命令行模式快速打开文件的实现方法,包括以下步骤:
步骤S1,打开文件,查找列表缓存文件,若不存在缓存文件则跳转至步骤S2,若存在缓存文件则跳转至步骤S3;
步骤S2,遍历源码树下的所有文件,将这些文件的列表缓存文件保存起来;
步骤S3,针对用户所需要打开的文件名,在列表缓存文件中搜索,查找匹配包含该文件名的目录;
步骤S4,根据匹配结果进行第一次决策,找到文件名匹配的目录;
步骤S5,进入目录,遍历所述目录下的所有文件进行第二次决策,打开用户所需要打开的文件。
Linux操作系统及命令是被使用最多的命令行环境,本例是针对基于Linux操作系统的命令行模式来设计的;本例基于这样的环境及素材,编写命令工具程序,可以将其命名为gvi,用于快速打开代码文件进入阅读或编辑模式,本例只需要录入一个参数,即文件名参数,用于接收用户输入的需要查找的文件名。具体过程如下。
本例所述步骤S1中,打开缓存文件,如果不存在,则跳转至步骤S2创建缓存文件;如果打开失败,将出错信息回显,比如无权限等原因;如果打开成功,则跳转到步骤S3,开始遍历缓存文件。
本例所述步骤S2优选包括以下子步骤:
步骤S201,创建列表缓存文件,并设置其初始内容为空;
步骤S202,进入源码树目录,按字母编排顺序遍历所述源码树目录下的所有子目录和文件;
步骤S203,对于遍历出来的文件,获取该文件的文件类型和文件名,并将该文件的路径添加到列表缓存文件中,然后添加回车换行符,将下一个文件的文件类型、文件名以及路径存储到下一行;
步骤S204,对于遍历出来的子目录,判断所述子目录是否为被忽略的对象,如果不是,则进入此子目录;
步骤S205,重复调用执行步骤S202至步骤S204,直到目录为空或者不再有子目录。
本例所述步骤S2优选以读写方式打开一空文件;然后按字母顺序遍历当前目录下的所有文件和目录,对于遍历出来的对象进行递归遍历,遇到特殊对象时结束本次遍历。特殊对象包括:普通文件(非目录)和特殊目录“.”和“..”,因为Linux操作系统每个目录都包含“.”和“..”两个特殊目录,代表当前目录和上一级目录,编译输出的目录如out或者bin,版本控制工具管理的目录如.git等。其中,普通文件在这里主要是.c和.h等相关文件,这种相关文件即为本例关注的对象,将这些对象名称写入添加到列表缓存文件,每个对象名称以回车换行符分隔。那么缓存文件的每一行就能够表示一个文件路径名。最后,将遍历结果写入列表缓存文件后,关闭此列表缓存文件,即可完成所述步骤S2。
因此,所述步骤S2中,对于遍历出来的文件,获取该文件的文件类型和文件名后,优选将包含“.”和“..”两个特殊目录的文件进行删除,然后再这些需要关注的文件的路径添加到列表缓存文件中,便于后续的处理和操作。
本例所述步骤S3优选包括以下子步骤:
步骤S301,以只读模式打开缓存文件,定义第一匹配数组temp_match_dir[i],索引初始化为0;
步骤S302,逐行读取所述缓存文件,并在读取的每一行数据中匹配所需要打开的文件名,直到到达所述缓存文件的末尾则结束;
步骤S303,关闭缓存文件。
本例所述步骤S302中,在读取的每一行数据中匹配所需要打开的文件名的过程如下:
步骤S3021,将读取到的本行数据存储到字符串变量中;
步骤S3022,通过分隔符分割所述字符串变量,每一个分隔符表示一个目录层级,通过所述字符串变量得到每级子目录名称,其中,所述子目录名称的最后一个元素则为文件名;
步骤S3023,在所述子目录名称的最后一个元素中匹配所需要打开的文件名,如果匹配成功则将其路径记录到所述第一匹配数组temp_match_dir[i]中,并将所述第一匹配数组temp_match_dir[i]的索引i进行加1操作。
本例所述步骤S3的分隔符优选未“/”,在读取所述缓存文件中的每一行对象,即读取文件路径名称后,通过“/”分隔符获取最后一个字段,在该字段中搜索模式匹配所需要打开的文件名。如果匹配,获取该行路径名,分配对应长度的字符串空间,返回地址赋值到第一匹配数组temp_match_dir[i]的元素,同时将该路径名字符串拷贝到第一匹配数组temp_match_dir[i]对应的空间,索引i加1。如果不匹配,则继续读取下一行。如此循环,直至缓存文件读取结束,关闭缓存文件。所述第一匹配数组temp_match_dir[i]为预先定义的用于存储文件匹配路径等元素的数组; temp_match_dir[i]是第一匹配数组的数组预定义名,在实际应用中,也可以根据用户需要进行更改和调整。
本例所述步骤S4中,根据匹配结果进行第一次决策的过程如下:
步骤S401,如果第一匹配数组temp_match_dir[i]中没有任何有效元素,则没有找到匹配目标,提示用户输入的文件名找不到;
步骤S402,如果第一匹配数组temp_match_dir[i]中有且只有1个有效元素,则直接进入第一匹配数组temp_match_dir[i],i=1所指向的目录;
步骤S403,如果第一匹配数组temp_match_dir[i]中有两个以上有效元素,则显示出各目录并对各目录编号输出,编号即为第一匹配数组temp_match_dir[i]的下标i,通过输入编号得到此元素值。
也就是说,所述步骤S401至所述步骤S403是并列的步骤,根据相应的结果跳转至对应的步骤,实现第一次决策。
本例所述步骤S403中,如果第一匹配数组temp_match_dir[i]中有至少两个有效元素,则先进行元素去重处理,然后再显示出各目录并对各目录编号输出。这样设置的原因在于,因为本例的文件名匹配要支持子串匹配,同一目录下可能存在多个匹配的文件名,所以步骤S3输出的数组元素中可能存在重复值,因此要做去重处理;而由于步骤S2优选按照字母顺序遍历文件,所以数组重复值只可能出现在相邻的元素中,进而,本例可以通过下面的方式进行元素去重处理;值得一提的是,本例所述步骤S403的这种元素去重处理方式并不是本领域常规设计,明显的,与前后步骤的设置以及其应用环境是相关的。
本例所述步骤S403中的元素去重处理包括以下子步骤:
步骤S4031,初始化所述第一匹配数组temp_match_dir[i]的索引i为0,定义第二匹配数组match_dir[j]作为去重处理后的匹配数组,并初始化所述第二匹配数组match_dir[j]的索引j为0;
步骤S4032,将所述第一匹配数组temp_match_dir[i]赋值至所述第二匹配数组match_dir[j]中;
步骤S4033,比较当前索引的第一匹配数组temp_match_dir[i]和下一索引的第一匹配数组temp_match_dir[i+1]中的数据,如果字符串值相等,索引i自增1;如果不相等,索引i和索引j各自增1,将当前索引的第一匹配数组temp_match_dir[i]赋值到第二匹配数组match_dir[j]中;
步骤S4034,重复执行步骤S4033,直到索引i达到最后一个元素,则退出元素去重处理。
本例所述第二匹配数组match_dir[j] 为预先定义的用于存储元素去重处理之后的文件匹配路径等元素的数组。 temp_match_dir[j]是第二匹配数组的数组预定义名,在实际应用中,也可以根据用户需要进行更改和调整。
本例所述步骤S5优选包括以下子步骤:
步骤S501,进入目录,遍历所述目录下的所有文件,匹配用户所需要打开的文件名,将匹配文件名记录到第三匹配数组match_file[n]中,n为第三匹配数组match_file[n]的索引,所述第三匹配数组match_file[n]中的每个元素用于保存字符串变量的指针;
步骤S502,如果第三匹配数组match_file[n]里没有有效元素,则找不到匹配的文件名,提示用户没找到文件,结束程序;
步骤S503,如果第三匹配数组match_file[n]里有且只有一个非空指针,则直接通过linux系统的文本编辑器打开第三匹配数组match_file[n]中n=0的指针所指向的文件,结束程序;
步骤S504,如果第三匹配数组match_file[n]里有两个以上非空指针,则打印各非空指针所指向的字符串名称,并通过索引n实现编号输出,提示用户选择;在用户输入对应的索引n的编号后,通过linux系统的文本编辑器打开对应指向的文件,结束程序。
本例所述第三匹配数组match_file[n]为预先定义的用于存储匹配文件名记录的数组。 temp_match_dir[n]是第三匹配数组的数组预定义名,在实际应用中,也可以根据用户需要进行更改和调整。
知得一提的是,当源码树中有文件被删除或者创建新的文件时,根据用户的设置重新生成和保存列表缓存文件。优选的,重新生成和保存列表缓存文件的过程为:删除当前的列表缓存文件,在下次运行时进入步骤S2就能够重新生成和保存新的列表缓存文件。
因此,本例在运行程序之后,只要匹配到所需要打开的文件的完整文件名或者完整文件名的一部分,就可以直接打开该文件,进而能够让命令行操作人员快速定位和打开所需要的文件,大幅度提高工作效率。本发明能够有效避免用户因为不知道文件路径,需要预先搜索文件所在的路径后再去手动打开等耗时且麻烦的操作,本发明可以达到秒级以下的文件打开响应时间,当存在多个匹配文件时,还可以实时反馈给用户,让用户选择匹配文件来实现打开。
与现有技术相比,本例可以根据文件名能够快速定位该文件的位置或目录;可以根据文件名快速打开文件,如针对文本文件,快速打开进入阅读或编辑模式;文件名不需要写全,可以只提供文件名字符串的部分子串,还可以通过用户的设置忽略大小写,关注特定的文件类型等匹配模式。因此,基于本例,可以扩展实现文件的快速删除、备份或其它处理等,对于开发人员来说,是一个很大的帮助,提供了很好的工具。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (10)

1.一种基于命令行模式快速打开文件的实现方法,其特征在于,包括以下步骤:
步骤S1,打开文件,查找列表缓存文件,若不存在缓存文件则跳转至步骤S2,若存在缓存文件则跳转至步骤S3;
步骤S2,遍历源码树下的所有文件,将这些文件的列表缓存文件保存起来;
步骤S3,针对用户所需要打开的文件名,在列表缓存文件中搜索,查找匹配包含该文件名的目录;
步骤S4,根据匹配结果进行第一次决策,找到文件名匹配的目录;
步骤S5,进入目录,遍历所述目录下的所有文件进行第二次决策,打开用户所需要打开的文件。
2.根据权利要求1所述的基于命令行模式快速打开文件的实现方法,其特征在于,所述步骤S3包括以下子步骤:
步骤S301,以只读模式打开缓存文件,定义第一匹配数组temp_match_dir[i],索引初始化为0;
步骤S302,逐行读取所述缓存文件,并在读取的每一行数据中匹配所需要打开的文件名,直到到达所述缓存文件的末尾则结束;
步骤S303,关闭缓存文件。
3.根据权利要求2所述的基于命令行模式快速打开文件的实现方法,其特征在于,所述步骤S302中,在读取的每一行数据中匹配所需要打开的文件名的过程如下:
步骤S3021,将读取到的本行数据存储到字符串变量中;
步骤S3022,通过分隔符分割所述字符串变量,每一个分隔符表示一个目录层级,通过所述字符串变量得到每级子目录名称,其中,所述子目录名称的最后一个元素则为文件名;
步骤S3023,在所述子目录名称的最后一个元素中匹配所需要打开的文件名,如果匹配成功则将其路径记录到所述第一匹配数组temp_match_dir[i]中,并将所述第一匹配数组temp_match_dir[i]的索引i进行加1操作。
4.根据权利要求2或3所述的基于命令行模式快速打开文件的实现方法,其特征在于,所述步骤S4中,根据匹配结果进行第一次决策的过程如下:
步骤S401,如果第一匹配数组temp_match_dir[i]中没有任何有效元素,则没有找到匹配目标,提示用户输入的文件名找不到;
步骤S402,如果第一匹配数组temp_match_dir[i]中有且只有1个有效元素,则直接进入第一匹配数组temp_match_dir[i],i=1所指向的目录;
步骤S403,如果第一匹配数组temp_match_dir[i]中有两个以上有效元素,则显示出各目录并对各目录编号输出,编号即为第一匹配数组temp_match_dir[i]的下标i,通过输入编号得到此元素值。
5.根据权利要求4所述的基于命令行模式快速打开文件的实现方法,其特征在于,所述步骤S403中,如果第一匹配数组temp_match_dir[i]中有至少两个有效元素,则先进行元素去重处理,然后再显示出各目录并对各目录编号输出。
6.根据权利要求5所述的基于命令行模式快速打开文件的实现方法,其特征在于,所述步骤S403中的元素去重处理包括以下子步骤:
步骤S4031,初始化所述第一匹配数组temp_match_dir[i]的索引i为0,定义第二匹配数组match_dir[j]作为去重处理后的匹配数组,并初始化所述第二匹配数组match_dir[j]的索引j为0;
步骤S4032,将所述第一匹配数组temp_match_dir[i]赋值至所述第二匹配数组match_dir[j]中;
步骤S4033,比较当前索引的第一匹配数组temp_match_dir[i]和下一索引的第一匹配数组temp_match_dir[i+1]中的数据,如果字符串值相等,索引i自增1;如果不相等,索引i和索引j各自增1,将当前索引的第一匹配数组temp_match_dir[i]赋值到第二匹配数组match_dir[j]中;
步骤S4034,重复执行步骤S4033,直到索引i达到最后一个元素,则退出元素去重处理。
7.根据权利要求4所述的基于命令行模式快速打开文件的实现方法,其特征在于,所述步骤S5包括以下子步骤:
步骤S501,进入目录,遍历所述目录下的所有文件,匹配用户所需要打开的文件名,将匹配文件名记录到第三匹配数组match_file[n]中,n为第三匹配数组match_file[n]的索引,所述第三匹配数组match_file[n]中的每个元素用于保存字符串变量的指针;
步骤S502,如果第三匹配数组match_file[n]里没有有效元素,则找不到匹配的文件名,提示用户没找到文件,结束程序;
步骤S503,如果第三匹配数组match_file[n]里有且只有一个非空指针,则直接通过linux系统的文本编辑器打开第三匹配数组match_file[n]中n=0的指针所指向的文件,结束程序;
步骤S504,如果第三匹配数组match_file[n]里有两个以上非空指针,则打印各非空指针所指向的字符串名称,并通过索引n实现编号输出,提示用户选择;在用户输入对应的索引n的编号后,通过linux系统的文本编辑器打开对应指向的文件,结束程序。
8.根据权利要求1至3任意一项所述的基于命令行模式快速打开文件的实现方法,其特征在于,所述步骤S2包括以下子步骤:
步骤S201,创建列表缓存文件,并设置其初始内容为空;
步骤S202,进入源码树目录,按字母编排顺序遍历所述源码树目录下的所有子目录和文件;
步骤S203,对于遍历出来的文件,获取该文件的文件类型和文件名,并将该文件的路径添加到列表缓存文件中,然后添加回车换行符,将下一个文件的文件类型、文件名以及路径存储到下一行;
步骤S204,对于遍历出来的子目录,判断所述子目录是否为被忽略的对象,如果不是,则进入此子目录;
步骤S205,重复调用执行步骤S202至步骤S204,直到目录为空或者不再有子目录。
9.根据权利要求1至3任意一项所述的基于命令行模式快速打开文件的实现方法,其特征在于,当源码树中有文件被删除或者创建新的文件时,根据用户的设置重新生成和保存列表缓存文件。
10.根据权利要求9所述的基于命令行模式快速打开文件的实现方法,其特征在于,重新生成和保存列表缓存文件的过程为:删除当前的列表缓存文件,在下次运行时进入步骤S2重新生成和保存新的列表缓存文件。
CN201911215387.1A 2019-12-02 2019-12-02 一种基于命令行模式快速打开文件的实现方法 Active CN111045991B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911215387.1A CN111045991B (zh) 2019-12-02 2019-12-02 一种基于命令行模式快速打开文件的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911215387.1A CN111045991B (zh) 2019-12-02 2019-12-02 一种基于命令行模式快速打开文件的实现方法

Publications (2)

Publication Number Publication Date
CN111045991A CN111045991A (zh) 2020-04-21
CN111045991B true CN111045991B (zh) 2023-03-21

Family

ID=70234467

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911215387.1A Active CN111045991B (zh) 2019-12-02 2019-12-02 一种基于命令行模式快速打开文件的实现方法

Country Status (1)

Country Link
CN (1) CN111045991B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112115106A (zh) * 2020-09-30 2020-12-22 重庆长安汽车股份有限公司 一种文件批量抓取复制方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5218696A (en) * 1989-07-24 1993-06-08 International Business Machines Corporation Method for dynamically expanding and rapidly accessing file directories
CN103150395A (zh) * 2013-03-25 2013-06-12 中国人民解放军国防科学技术大学 基于ssd的文件系统目录路径解析方法
CN103870588A (zh) * 2014-03-27 2014-06-18 杭州朗和科技有限公司 一种在数据库中使用的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5218696A (en) * 1989-07-24 1993-06-08 International Business Machines Corporation Method for dynamically expanding and rapidly accessing file directories
CN103150395A (zh) * 2013-03-25 2013-06-12 中国人民解放军国防科学技术大学 基于ssd的文件系统目录路径解析方法
CN103870588A (zh) * 2014-03-27 2014-06-18 杭州朗和科技有限公司 一种在数据库中使用的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
庞海飞 ; 常青 ; 张刚 ; .基于Linux文件检索方法的改进研究.2017,(02),全文. *

Also Published As

Publication number Publication date
CN111045991A (zh) 2020-04-21

Similar Documents

Publication Publication Date Title
KR101323011B1 (ko) 데이터베이스 애플리케이션에 선택 가능 기능 컨트롤을디스플레이하기 위한 명령 사용자 인터페이스
US7356816B2 (en) Method and apparatus for multiplatform migration
US7536294B1 (en) Method and apparatus for translating computer programs
US6370646B1 (en) Method and apparatus for multiplatform migration
US20070276848A1 (en) Apparatus and method for managing data
US10311024B2 (en) Merging file storage directory structures through user interface visualization of refactoring decisions
CN110908671A (zh) 构建docker镜像的方法、装置及计算机可读存储介质
JP6643807B2 (ja) 文書管理クライアント装置、文書管理方法
EP2996025B1 (en) Data migration tool with intermediate incremental copies
CN113760306A (zh) 安装软件的方法、装置、电子设备及存储介质
CN111045991B (zh) 一种基于命令行模式快速打开文件的实现方法
JPWO2007099636A1 (ja) ファイルシステム移行方法、ファイルシステム移行プログラム及びファイルシステム移行装置
KR20010020962A (ko) 데이터 처리 시스템에서 재귀 하드 링크를 처리하기 위한방법 및 장치
US8589426B1 (en) Simultaneous file editor
JP7131119B2 (ja) ソースアプリケーションからのソースデータをターゲットアプリケーションのターゲットデータへとマージするためのシステムおよび方法
JP4846736B2 (ja) 並列処理支援装置
US7558810B2 (en) System and method for managing a path environment variable
US20190129670A1 (en) Information processing apparatus
CN115248803B (zh) 适用于网盘文件的收藏方法、装置、网盘及存储介质
JP4905989B2 (ja) メタデータ検索装置
CN116894007B (zh) 一种目录信息显示方法、装置、计算设备和存储介质
JP6318327B1 (ja) コード自動記述ソフトウェアを記録した記録媒体
CN117873556A (zh) 面向芯片验证的版本管理方法、系统、装置、设备、介质
CN114281760A (zh) 数据项文件的注册方法、系统、电子设备及存储介质
JPH0934764A (ja) 情報処理方法及び装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant