Linux中的文件搜索
Post

Linux中的文件搜索

我们经常需要搜索文件名或者文件内容。

搜索文件名

可以用find命令。

1
find < path > < expression > < cmd >
  • path: 所要搜索的目录及其所有子目录。默认为当前目录。
  • expression: 所要搜索的文件的特征。
  • cmd: 对搜索结果进行特定的处理。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 搜索包含指定字符串的文件名
find / -name "*Docker*"

# 无视大小写用iname
find ./ -iname "*.config"

# 忽略错误,比如没权限访问某个目录会打印一堆错误
find ./ -name "*.json" 2>/dev/null

# 搜索大于100M的文件
find / -size +100M -exec du -h {} \; 2>/dev/null

# 搜索0kb的文件并删除
find ./ -size 0 | xargs rm -f &

find命令功能非常强大,具体请查阅文档。

搜索文件内容

可以用 grep 命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 搜索包含docker的文件,并打印命中行
grep -nr "docker" ./

# 搜索包含dokcer的文件,只打印文件名
grep -lr "docker" ./

# 只搜索文本文件,忽略二进制文件
grep -lrI "docker" ./

# 搜索匹配正则表达式的文件
egrep -lr "^docker" ./

# 搜索当前目录下的某些文件的内容
grep -lr "docker" *.py

egrepgrep 的正则表达式版本,grep还支持很多参数,具体请查阅文档。查找文件内容也可以用 find 命令。

1
find ./ -name "*.py" -exec grep -l "docker" {} \;

find 可以先对文件名或者类型先做一次过滤,再具体到内容搜索。

详解Linux里的 /etc/passwd

在线面试编码能力