python学习- 打印最常用的10条linux命令和查找目录下重复的文件

一、打印最常用的10条linux命令

#!/usr/bin/python
#coding=utf-8
import os
from collections import Counter
c = Counter()
with open(os.path.expanduser('~/.bash_history')) as f:
	for line in f:
		cmd = line.strip().split()
		if cmd:
			c[cmd[0]]+=1
print c.most_common(10)

效果如下:

二、找到目录下重复的文件

#!/usr/bin/python
#coding=utf-8
from __future__ import print_function
import sys
import hashlib
import os
import fnmatch

CHUNK_SIZE=8192
def is_file_match(filename,patterns):
	for pattern in patterns:
		if fnmatch.fnmatch(filename,pattern):
			return True
	return False

def find_specific_files(root,patterns=['*'],exclude_dirs=[]):
	for root,dirnames,filenames in os.walk(root):
		for filename in filenames:
			if is_file_match(filename,patterns):
				yield os.path.join(root,filename)
				for d in exclude_dirs:
					if d in dirnames:
						dirnames.remove(d)	

def get_chunk(filename):
	with open(filename) as f:
		while True:
			chunk=f.read(CHUNK_SIZE)
			if not chunk:
				break
			else:
				yield chunk

def get_file_checksum(filename):
	h=hashlib.md5()
	for chunk in get_chunk(filename):
		h.update(chunk)
	return h.hexdigest()

def main ():
	sys.argv.append("")
	directory=sys.argv[1]
	if not os.path.isdir(directory):
		raise SystemExit ("{0} is not a directory".format(directory))
		 
	record={}
	for item in find_specific_files(directory):
		checksum=get_file_checksum(item)
		if checksum in record:
			print ('find duplicate files: {0} vs {1}'.format(record[checksum],item))
		else:
			record[checksum]=item

if __name__ == '__main__':
	main()

效果如下:

原文地址:http://blog.51cto.com/11555417/2117594

时间: 2024-11-06 17:18:16

python学习- 打印最常用的10条linux命令和查找目录下重复的文件的相关文章

常用的50条linux 命令

从今天起,咱开始正式学习python了,于是遍整理了50条linux的常用命令. 1 线上查询帮助命令 :man   遇到什么不会的命令可以 man +你想要查询的命令 (需要有网),因为是英文的所以身边最好再准备一个词典 2 目录操作命令:ls   ls命令就是list directory的缩写,缺省下ls用来打印出当前目录的清单 [语法格式]:ls -参数 [选项参数]: 参数 参数说明 其他说明 d 显示目录   a 显示全部 包括.开头的隐藏文件 l 长格式显示 每一列只显示一个文件 (

python之查询指定目录下的最新文件

使用os模块查询指定目录下的最新文件 1 import os 2 3 # 输入目录路径,输出最新文件完整路径 4 def find_new_file(dir): 5 '''查找目录下最新的文件''' 6 file_lists = os.listdir(dir) 7 file_lists.sort(key=lambda fn: os.path.getmtime(dir + "\\" + fn) 8 if not os.path.isdir(dir + "\\" + f

python 学习笔记 14 -- 常用的时间模块之datetime

书接上文,前面我们讲到<常用的时间模块之time>,这次我们学习datetime -- 日期和时间值管理模块 使用apihelper 查看datetime 模块,我们可以看到简单的几项: date       ---  日期对象,结构为date(year, month, day) time       ---  时间值对象,结构为 time([hour[, minute[, second[, microsecond[, tzinfo]]]]]).时间对象所有的参数都是可选的.tzinfo 可以

python 学习笔记 13 -- 常用的时间模块之time

Python 没有包含对应日期和时间的内置类型,不过提供了3个相应的模块,可以采用多种表示管理日期和时间值: *    time 模块由底层C库提供与时间相关的函数.它包含一些函数用于获取时钟时间和处理器的运行时间,还提供了基本解析和字符串格式化工具 *    datetime 模块为日期.时间以及日期时间值提供一个更高层接口.datetime 中的类支持算术.比较和时区配置. *    calendar 模块可以创建周.月和年的格式化表示.它还可以用来计算重复事件.给定日期是星期几,以及其他基

python学习笔记day5——常用模块学习

一.主要内容 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 二.具体内容 1.模块 a.定义:本质就是.py结尾的python文件,逻辑上组织python代码,实现某种功能.例:文件名test.py-->模块名test. b.导入方法:imort moduname from mdn

python学习笔记(六):常用模块

一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py文件,包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果你想导入其他目录下的模块,那么这个目录必须是一个包才可以导入. 导入模块 1 2 3 4 5 import module #导入模块 from modul

Python学习之路—2018/7/10

Python学习之路-2018/7/10 博客开发项目流程 ? 一般来说,一个项目的开发流程分为:项目需求.设计表结构.功能开发.测试功能.产品上线,本次学习以博客园为蓝本进行开发. 1.项目需求 博客的开发的需求主要有以下几点: 基于auth模块和Ajax实现登录验证 基于forms组件和Ajax实现注册功能 设计博客首页 设计个人站点页面 设计文章详情页面 实现文章点赞功能 实现文章的评论功能,包括对文章的评论以及对文章评论的评论 实现富文本编辑框 防止xss攻击(例如当用户的文章中含有JS

Linux 新手必知必会的 10 条 Linux 基本命令

Linux 对我们的生活产生了巨大的冲击.至少你的安卓手机使用的就是 Linux 核心.尽管如此,在第一次开始使用 Linux 时你还是会感到难以下手.因为在 Linux 中,通常需要使用终端命令来取代 Windows 系统中的点击启动图标操作.但是不必担心,这里我们会介绍 10 个 Linux 基本命令来帮助你开启 Linux 神秘之旅. 帮助新手走出第一步的 10 个 Linux 基本命令 当我们谈论 Linux 命令时,实质上是在谈论 Linux 系统本身.这短短的 10 个 Linux

每天一条linux命令(1):ls命令

ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linux文件夹包含的文件而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等.ls 命令在日常的linux操作中用的很多! 1. 命令格式: ls [选项] [目录名] 2. 命令功能: 列出目标目录中所有的子目录和文件. 3. 常用参数: -a, –all 列出目录下的所有文件,包括以