怎么在linux/centos系统或者云计算集群中寻找文件

1,002 阅读1分钟

一般用户在linux系统中没有管理员权限。所以find命令经常遇到Permission denied。

这里提供两种解决办法:

1. 使用python脚本,本人自己写了一个python脚本可以在服务器上运行查找特定文件的功能且不会报Permission denied的错误

import os
import re

def findInPath(dirname):
    pattern = re.compile(r'libcuda\.so\.1') #这个地方设置要找的文件名
    result = []
    for maindir, subdir, file_name_list in os.walk(dirname):
        for filename in file_name_list:
            apath = os.path.join(maindir, filename)
            result = pattern.findall(apath)
            if result[0] == '':
                pass
            else:
                print(apath)

if __name__ == "__main__":
    path = '/opt'
    findInPath(path)

设定好寻找的其实起始目录和要找的文件名字就可以愉快地玩耍啦。使用这个脚本最好是使用集群计算力提交到任务里,这样会比在命令行运行快很多

2. 使用shell脚本 alias findfile='find . -depth -type f -iname "*" 2>/dev/null | xargs md5sum 2>/dev/null | grep --color -nE -ir' 这个shell命令也可以做到类似的功能,不过个人觉得性能上还是不如python脚本快