使用 Linux 经常会遇到这种情况:只知道文件名 或 文件内容 中包含某些特定的字符串,但是不知道具体的文件名。需要根据“特定的字符串”反向查找文件。
1、查找文件名中包含特定字符的文件
使用: find 目录 -name ‘*特定字符串*’
如:
find ./ -name '*2021-11-01*'
find ./ -name '2021-11-01*'
find ./ -name '*2021-11-01'
详细find命令用法:linux查找find命令详解https://blog.csdn.net/weixin_40482816/article/details/112215233
2、查找目录下文件内容包含特定字符串的所有文件
2.1、方式1: grep 命令
Linux grep 命令用于查找文件里符合条件的字符串。grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
标准格式:
grep -rn
"特定字符串"
./
如:
grep -rn "set" *
说明:
-r : 递归查找
-n : 显示行号
-R : 查找所有文件包含子目录
-i : 忽略大小写
* : 表示当前目录所有文件,也可以是某个文件名。
2.2、方式2:find 命令(知道文件的目录)
find ./ -name "*.*" | xargs grep "Hello"
示例:
2.3、方式3:find 命令(知道文件的目录)
find . | xargs grep -ri "Hello"
find . | xargs grep -ri "Hello" -l #-l 表示只显示文件名
示例:
2.4、方式4:不知道文件的目录,知道文件的类型
find / -type f -name "*.txt" | xargs grep "Hello"
示例: