专栏首页大猪的笔记ubuntu下查找脚本

ubuntu下查找脚本

写了一个查找包装。少敲点命令。 代码:

import subprocess, os, sys
import getopt
import re

def cmd(cmdstr):
    ps = subprocess.Popen(cmdstr, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
 shell=True)
    while True:
        data = ps.stdout.readline()
        if data == b'':
            if ps.poll() is not None:
                break
        else:
            # print("libos output: {}".format(data))
            yield str(data, errors='ignore')

def search(search_word, search_suffix):
    try:
        cmdstr = "find {} -name \"{}\"".format(os.path.abspath("./"), search_word)
        results = cmd(cmdstr)
        for item in results:
            if search_suffix:
                suffix = os.path.splitext(item)[1][1:].lower().strip()
                if suffix in search_suffix:
                    print(item, end="")
            else:
                print(item, end="")

    except KeyboardInterrupt:
        pass
    except Exception as errors:
        print(errors)

def grep(search_word, search_suffix):
    try:
        cmdstr = "grep -r \"{}\" {}".format(search_word, os.path.abspath("./"))
        results = cmd(cmdstr)
        for item in results:
            if len(item) > 512:
                continue
            # print(item.split(":")[0])
            if ":" in item:
                cur_path = item.split(":")[0]
            else:
                continue
            if search_suffix:
                suffix = os.path.splitext(cur_path)[1][1:].lower().strip()
                if suffix in search_suffix:
                    print_color(item, search_word)
            else:
                print_color(item, search_word)
    except KeyboardInterrupt:
        pass
    except Exception as errors:
        print(errors)

def print_color(main_wd, key_wd):
    class bcolors:
        HEADER = '\033[95m'
        OKBLUE = '\033[94m'
        OKGREEN = '\033[92m'
        WARNING = '\033[93m'
        FAIL = '\033[91m'
        ENDC = '\033[0m'
        BOLD = '\033[1m'
        UNDERLINE = '\033[4m'
    match_key_wd = re.search(key_wd, main_wd)
    main_wd = re.sub(key_wd, bcolors.OKBLUE + match_key_wd.group(0) + bcolors.ENDC, main_wd)
    print(main_wd,end="")


opts, args = getopt.getopt(sys.argv[1:], "s:g")
for op, value in opts:
    if op == "-s":
        no_search_suffix = value.split(",")
        search_word = args[0]
        search(search_word, no_search_suffix)
    if op == "-g":
        search_suffix = []
        search_word = args[0]
        grep(search_word, search_suffix)

if len(opts) == 0:
    search_suffix = []
    search(args[0], search_suffix)

配置: .bashrc

alias fcd='python3 ~/workspace/find/find.py'
alias gcd='python3 ~/workspace/find/find.py -g'

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C#笔记:Ueditor上传文件引入数据库

    项目下载:http://pan.baidu.com/s/1gd8aJvH 密码:qu4c

    超级大猪
  • go:文件路径相关

    超级大猪
  • C#笔记:反射的简单用法

    反射其实说白了就是,当你知道类的名字和位置。你可以在程序运行时直接创建实例调用它。没什么大不了的。

    超级大猪
  • CRM Web Client UI异步搜索介绍

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 用Java 8 stream流实现简洁的集合处理

    java 8已经发行好几年了,前段时间java 12也已经问世,但平时的工作中,很多项目的环境还停留在java1.7中。而且java8的很多新特性都是革命性的,...

    宜信技术学院
  • Java 多线程编程(上)

    https://blog.csdn.net/weixin_44510615/article/details/102617286

    润森
  • Spring Cloud里的服务提供者如何与注册中心进行通信

    从这张图我们知道,无论是服务提供者还是服务的调用者,他们都需要与Eureka服务器进行通信。他们之间是如何进行消息传递的呢?通过wireshark抓包工具...

    良辰美景TT
  • WebClient UI删除搜索条件的后台处理,以及max hit的处理逻辑

    advanced search remove one search attribute in UI - and 1000 maxmium numbe

    Jerry Wang
  • 「kafka」kafka-clients,java编写生产者客户端及原理剖析

    构建的消息对象ProducerRecord并不是单纯意义上的消息,它包含了多个属性,原本需要发送的业务相关的消息体只是其中的一个value属性,比如“hello...

    源码之路
  • IE8 中,无法用$.focus()设置input的焦点

    开始时,没有return false时,除IE8之外,其它浏览器都能回车与上下键切换input的焦点。

    申君健

扫码关注云+社区

领取腾讯云代金券