Linux系统搜索某个目录下特定文件的方法(find)

在Linux下搜索指定名称的文件的方法,可以用find命令,格式

$ find <dir> -name <filename>

<dir>表示搜索的路径,<filename>表示搜索的文件名,比如

$ find . -name '*.py'

搜索当前目录下所有后缀.py的文件。

搜索范围包含所有子目录。

find命令还有很多其它用途,如果搜索指定名称的目录,可以加上-type d选项

$ find . -name 'c*' -type d

搜索当前目录下,c开头的子目录

搜索目录下,近期访问过或修改过的文件,如下

$ find . -amin -60           #搜索目录下60分钟之内访问过的文件

$ find . -atime -2            #搜索目录下2小时之内访问过的文件

$ find . -mmin -120        #查找目录下120分钟内修改过的文件

$ find . -mtime -5           #查找目录下5小时内修改过的文件

搜索指定用户的文件

$ find . -user ubuntu      #搜索目录下属于用户ubuntu的文件

另外通过-or,-and指令可以组合多个搜索条件,比如

$ find . -name '*.py' -or -name '*.pyc'        #搜索目录下文件名为*.py或者*.pyc的文件

$ find . -user 'ubuntu' -and -name '*.py'    #搜索目录下属于用户ubuntu的py文件

find指令还有很多其它功能,具体可参见

https://www.cnblogs.com/x00479/p/14286497.html

https://www.cnblogs.com/qize/p/12550163.html

### Linux 中打开文件目录并读取文件方法Linux 系统中,可以通过多种方式来打开文件目录并读取其中的文件内容。以下是几种常用方法及其对应的示例代码。 #### 方法一:使用 `opendir` 和 `readdir` 函数 这是 C/C++ 编程中的常见做法,用于遍历指定目录下的所有文件,并可进一步读取这些文件的内容。 ```c #include <stdio.h> #include <dirent.h> int main() { DIR *dir; struct dirent *entry; dir = opendir("/home/book/Linux"); // 打开目标目录 if (dir == NULL) { perror("无法打开目录"); return 1; } while ((entry = readdir(dir)) != NULL) { // 遍历目录项 printf("%s\n", entry->d_name); // 输出文件名 } closedir(dir); return 0; } ``` 上述代码展示了如何通过调用 `opendir()` 来打开一个目录,并利用循环配合 `readdir()` 获取该目录下的每一个条目名称[^1]。 #### 方法二:使用 Shell 命令组合 如果仅需简单地列出某个目录内的文件列表,则可以直接采用 shell 的内置工具完成此任务而无需编写额外程序: ```bash ls /path/to/directory | xargs cat ``` 这里,“|”管道符连接两个命令。“ls”负责列举给定路径下的所有项目;随后“xargs cat”会依次尝试打印每个项目的具体内容到终端屏幕上[^2]。 对于更复杂的场景比如递归查找子文件夹或者过滤特定类型的文档等操作来说,还可以考虑加入更多参数选项调整行为模式: ```bash find . -type f -name "*.txt" -exec cat {} \; ``` 这条语句的意思是从当前工作区(.)出发寻找(-find),限定只找常规文件(-type f),匹配扩展名为“.txt”的东西(-name ".txt") ,最后执行(cat){}动作于找到的目标上(\;)结束每轮处理过程[^4]。 #### 方法三:Python脚本实现自动化流程 除了原生支持外,在实际开发过程中也经常借助高级语言简化逻辑表达难度的同时提高跨平台兼容能力。下面给出一段基于 Python 实现相同功能的例子: ```python import os directory_path = '/home/book/Linux' for filename in os.listdir(directory_path): # 列举目录下所有的文件/子目录的名字 file_full_path = os.path.join(directory_path, filename) if os.path.isfile(file_full_path): # 如果是普通文件而非特殊节点或链接之类的结构体的话... with open(file_full_path,'r') as f:# 就按照只读的方式打开它咯~ print(f.read()) # 把整个文件一次性全部加载进来再吐出去吧! ``` 以上片段实现了基本的功能框架——即定位至某具体位置之后逐一访问里面的成员对象直至耗尽为止[^3]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值