linux查找目录下的所有文件中是否含有某个字符串

本文详细介绍find命令的各种实用案例,包括按名称、权限、属主、组、大小、类型及修改时间等多种条件查找文件。通过这些实例,读者可以快速掌握find命令的高级用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[size=large]查找目录下的所有文件中是否含有某个字符串
find .|xargs grep -ri "IBM"

查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名
find .|xargs grep -ri "IBM" -l

find命令举例
find -name "*.txt" -print 查找txt结尾的文件并输出到屏幕上
find /cmd ".sh" -print 查找/cmd目录下所有sh文件,并输出
find . -perm 755 -print 查找当前目录下权限为755的文件,并输出
find `pwd` -user root -print 查找当前目录下属主为root的文件,并输出
find ./ -group sunwill -print 查找当前目录下所属主是sunwill的文件
find /var -mtime -5 -print 查找/var目录下更改时间为5天内的所有文件
find /var -mtime +5 -print 查找/var目录下更改时间为5天以前的所有文件
find /var -newer "myfile1" ! -newer "myfile2" -print 查找/var目录下比myfile1新,但是比myfile2旧的所有文件。
find /var -type d -print 查找/var目录下所有目录
find /var -type l -print 查找/var目录下所有的符号链接文件。
find . -size +1000000c -print 查找当前目录下大于1000000字节的文件
find / -name "con.file" -depth -print 查找根目录下有无"con.file",若无则在其子目录中查找
find . -type f -exec ls -l {} \; 查找当前目录下是否有普通文件,若有则执行ls -l
[/size]
### 使用命令行在指定目录查找包含特定字符串文件 #### 方法一:组合 `find` 和 `grep` 对于 Linux 系统,在指定目录查找包含特定字符串文件可以采用 `find` 结合 `xargs` 及 `grep` 的方式。例如,要在一个目录及其子目录内寻找所有含有 `"SMS_ISSEND"` 字符串文件并仅显示这些文件的名字: ```bash find . | xargs grep -ri "SMS_ISSEND" --files-with-matches ``` 这条指令中的 `-r` 参数让 `grep` 进行递归搜索;而 `i` 则忽略了大小写的区别[^3]。 为了提高效率以及处理可能存在的空白字符等问题,推荐使用更安全的方式执行上述操作: ```bash find . -type f -print0 | xargs -0 grep -ri "SMS_ISSEND" --files-with-matches ``` 这里增加了 `-type f` 来限定只匹配普通文件,并通过 `-print0` 与 `xargs -0` 组合防止因为空白或其他特殊字符造成的问题。 #### 方法二:直接利用 `grep` 实现 实际上,如果不需要复杂的条件筛选,可以直接借助于 `grep` 自身的能力完成这一任务。比如要在 `/home/user/projects` 下面找到所有 `.txt` 文件里有 `"hello world"` 文字的地方: ```bash grep -rnw '/home/user/projects' -e 'hello world' --include=*.txt ``` 这里的选项解释如下: - `-r`: 对目标位置做递归式的遍历; - `-n`: 显示每一处匹配所在的行号; - `-w`: 完全单词形式匹配(即前后无其他字母); - `--include=<glob>`: 设置待查文件模式[^4]。 #### 封装成函数简化调用 考虑到实际应用中可能会频繁涉及此类查询需求,可以把这个过程封装到 shell 函数里面去以便随时调用。下面是从配置脚本 ~/.bashrc 提取出来的例子,允许用户自定义三个参数——路径、文件掩码和关键字来进行灵活检索[^5]: ```bash function finds() { if [ $# -lt 1 ]; then echo "Find condition is null." return 1 fi local condition=$1 local file="*" local path="." if [ $# -eq 2 ]; then file=$1 condition=$2 elif [ $# -eq 3 ]; then path=$1 file=$2 condition=$3 fi find "${path}" -name "${file}" | xargs grep -ns --color "${condition}" } ``` 此函数支持三种不同长度的输入参数组合,从而适应更多场景下的快速定位需要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值