手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

使用Python实现简单Linux之find命令

[日期:2017-06-04] 来源:Linux社区  作者:270142877 [字体: ]

使用Python实现简单Linux之find命令代码如下:

#!/usr/bin/python
#*-*coding:utf8*-*
 
from optparse import OptionParser
import os
import sys
 
#使用选项帮助信息可以使用中文
reload(sys)
sys.setdefaultencoding("utf-8")
 
#定义选项以及命令使用帮助信息
usage = sys.argv[0] + " Directory Options\n\n例:"+sys.argv[0] + " /etc --type f --name passwd\n\n注意:选项和目录益可随意调换,可以写多个目录,会从多个目录中进行查找"
parser = OptionParser(usage)
parser.add_option("--type",
                  dest="filetype",
                  action="store",
                  default=False,
                  help="指定查找对象的类型,文件类型可以是 d:代表目录 f:代表文件")
parser.add_option("--name",
                  dest="name",
                  action="store",
                  default=False,
                  help="指定查找对象的名称,文件或目录全名")
options, args = parser.parse_args()
 
def find(dir):
    directory = os.walk(dir)
    for x, y, z in directory:
        if options.filetype == "f":
            for name in z:
                if name == options.name:
                    path = os.path.join(x,name)
                    print(path)
        if options.filetype == "d":
            for name in y:
                if name == options.name:
                    path = os.path.join(x,name)
                    print(path)
 
#判断目录是否存在,并且是否为目录
for dir in args:
    if os.path.exists(dir) == False:
        sys.stderr.write(dir+" is not found\n")
        exit(100)
 
    if os.path.isfile(dir):
        sys.stderr.write(dir+" is a file\n")
        exit(101)
#判断--type选项是否正确,只能跟 f 或者 d
if not (options.filetype == "f" or options.filetype == "d"):
    sys.stderr.write("--type only support d or f\n")
    exit(102)
 
if __name__ == "__main__":
    for dir in args:
        find(dir)

运行结果如下:

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-06/144488.htm

linux
相关资讯       find命令 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款