Python实现Linux下文件查找
import os, sys def search(curpath, s):
L = os.listdir(curpath) #列出当前目录下所有文件
for subpath in L: #遍历当前目录所有文件
if os.path.isdir(os.path.join(curpath, subpath)): #若文件仍为目录,递归查找子目录
newpath = os.path.join(curpath, subpath)
search(newpath, s)
elif os.path.isfile(os.path.join(curpath, subpath)): #若为文件,判断是否包含搜索字串
if s in subpath:
print os.path.join(curpath, subpath) def main():
workingpath = os.path.abspath('.')
s = sys.argv[1]
search(workingpath, s) if __name__ == '__main__':
main()
PS: 关键分析红字部分
如果直接使用 subpath ,因它只是一个文件名,故判断它是否为目录语句 os.path.isdir(subpath) 只会在当前目录下查找subpath文件;而不会随着search的递归而自动在更新路径下查找。比如:
+/home/freyr/
|
|--------dir1/
| |
| |-------file1
| |-------file2
|
|--------dir2/
|
|--------file2
Step1、在主目录下遍历,subpath = dir1时,先判断是否为目录:os.path.isdir(subpath)其实就是os.path.isdir('/home/freyr/dir1')
Step2、dir1为目录,遍历dir1。subpath = file1时,同样先判断是否为目录:os.path.isdir(subpath)其实是os.path.isdir('/home/freyr/file1'),而不是os.path.isdir('/home/freyr/dir1/file1'),很明显/home/freyr下没有file1文件。这样造成的后果就是除了当前目录(一级目录)文件(如file2)可以搜索到,子目录内文件都是没有搜索到的,因为它每次都是跑到/home/freyr下搜索文件名
其实简单的说,os.path.isdir()函数在这里使用绝对路径!
Python实现Linux下文件查找的更多相关文章
- Linux下文件查找命令find笔记
在Linux命令下如果需要快速自己系统所需要处理的文件,可以通过find命令快速进行检索. 如果想在某个路径下查找相应的文件可以执行如下命令: find path -name filename # p ...
- linux下文件查找工具--find
常用的文件查找命令有:which,locate,find 1.which命令 查找二进制数或二进制命令,由PATH给出 2.loacte 特点: 1.非实时,每天在系统上生成数据库,通过数据库查询 2 ...
- python实现linux下文件遍历
import os def getAllFile(*names): if len(names) == 0: return "" else: allList = [] for nam ...
- Linux下快速查找文件
1 locate 查找内容.查找数据库,updatedb命令更新数据库 2 which 命令 3 find 路径 -name 查找内容.find命令会磁盘查找,比较耗时. 4 grep 查找内容一般为 ...
- Linux下文件搜索、查找、查看命令
Linux下文件搜索.查找.查看命令 1.最强大的搜索命令:find 查找各种文件的命令 2.在文件资料中查找文件:locate 3.搜索命令所在的目录及别名信息:which 4.搜索命令所在的目录及 ...
- Linux操作系统的文件查找工具locate和find命令常用参数介绍
Linux操作系统的文件查找工具locate和find命令常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.非实时查找(数据库查找)locate工具 locate命 ...
- Linux下如何查找可执行文件
Linux下的可执行文件 Linux下如何查找可执行文件,作为一个Linux小菜刚刚有了这个问题, 在windows中,可以通过后缀名判断是否是可执行文件,比如.exe,.bat等是可执行文件,但是在 ...
- Windows与Linux下文件操作监控的实现
一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场 ...
- linux 批量文件查找并替换
linux 批量文件查找并替换 sed -i "s/oldstring/newstring/g" `grep oldstring -rl path` 如: sed -i " ...
随机推荐
- jquery 动态事件绑定(0512)
jquery动态事件绑定,父元素需为静态元素,(不能是动态生成): $("#parent").on("click","#child",fun ...
- LeetCode3 Longest Substring Without Repeating Characters
题意: Given a string, find the length of the longest substring without repeating characters. Examples: ...
- 使用C#实现读取/写入Excel表
C#实现写入Excel表 using System; using System.Reflection; using System.IO; using Microsoft.Office.Interop. ...
- GOF设计模式之1:单例设计模式
1.单例设计模式核心作用: 保证一个类只有一个实例,并且提供了访问该实例的全局访问点 2.常见应用场景: window的任务管理器 项目中读取配置文件一般也是一个单例模式 数据库连接池的设计也是采用单 ...
- Guid vs Int
http://www.uml.org.cn/net/200512283.htm http://www.cnblogs.com/twodays/archive/2004/07/19/25562.aspx ...
- 【Android 界面效果31】Android--侧滑菜单应用的实现
侧滑菜单应用现在非常多,而且实现方式也多种多样.通过在网上的多方查找,我找到郭霖少侠的这篇文章:http://blog.csdn.net/guolin_blog/article/details/874 ...
- JAVA xml 流方式读取。数据挖掘大文件预处理。
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- DEDECMS 调用上级栏目标题
在内容页,使用以下代码: {dede:field name='position' runphp='yes'} $tc="-"; //分隔符 $tw=$GLOBALS['cfg_li ...
- python 基础——常用功能片段
1. 元素去重 data = [1,2,3,4,4,5,5,6] res = set(data) 2. 元素去重排序 res = sorted(set(data)) 2. 打印重复的元素 res = ...
- hdu-5586 Sum(dp)
题目链接: Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Probl ...