文章目录
- 1.find
- 1.1 文件名(-name)
- 1.2 文件类型(-type)
- 1.3 文件大小(-size)
- 1.4 目录层级
- 1.5 同时执行多个操作
- 1.5.1 -exec
- 1.5.2 -ok
- 1.5.3 xargs (推荐)
- 2. grep 查找文件中的字符串
- 3.local (先不看了)
1.find
根据文件的属性来查找文件:例如根据 文件名、文件类型、文件大小、文件目录深度等
1.1 文件名(-name)
# 精确查询 完整的文件名
# 模糊查询- * 可以匹配零个或多个字符- ? 匹配单个字符- 建议使用通配符的时候使用""包裹# 语法
find 搜索的路径 -name 要搜索的文件名
# 实例
find /home -name "*.txt"
1.2 文件类型(-type)
文件类型 | 类型的字符描述 |
---|---|
普通文件类型 | f |
目录类型 | d |
软连接类型 | l |
字符设备类型 | c |
块设备类型 | b |
管道类型 | p |
本地套接字类型 | s |
# 搜索 root 用户家目录下, 软连接类型的文件
find /root -type l
1.3 文件大小(-size)
# 语法格式:
$ find 搜索的路径 -size [+|-]文件大小- 文件大小需要加单位: - k (小写)- M (大写)- G (大写)
1.4 目录层级
- -maxdepth:能搜索到第多少层
- -mindepth:至少从第几层开始搜
# 查找文件, 从根目录开始, 最多搜索5层, 这个文件叫做 *.txt (1 <= 层数 <= 5)
$ sudo find / -maxdepth 5 -name "*.txt"# 查找文件, 从根目录开始, 至少从第5层开始搜索, 这个文件叫做 *.txt (层数>=5层)
$ sudo find / -mindepth 5 -name "*.txt"
1.5 同时执行多个操作
1.5.1 -exec
# 语法
find path args... -exec shell命令 {} \;-exec 后面跟着的是完整的shell命令- 结尾必须加 {} \;- {} \之间有空格,分号之前没有- 不要忘记分号!
liyb@lyb:~$ find ./ -maxdepth 2 -name "*.md" -exec ls -l {} \;
-rw-rw-r-- 1 liyb liyb 21642 11月 26 15:48 ./mprpc/note.md
-rw-rw-r-- 1 liyb liyb 0 11月 11 15:13 ./mprpc/README.md
-rw-rw-r-- 1 liyb liyb 6367 12月 3 19:38 ./learn_cmake/README.md
1.5.2 -ok
和-exec的使用完全一样,但是在执行命令的时候会询问 y?n
1.5.3 xargs (推荐)
使用这个不需要后面加{} ;
结合管道
# 注意 需要使用管道 |
# 并且不需要 -liyb@lyb:~$ find ./ -maxdepth 1 -name catkin_ws | xargs ls -l
总用量 52
drwxrwxr-x 3 liyb liyb 4096 6月 5 2024 bagfile
drwxrwxr-x 16 liyb liyb 4096 12月 12 20:28 build
drwxrwxr-x 4 liyb liyb 4096 5月 29 2024 build_isolated
drwxrwxr-x 5 liyb liyb 4096 11月 28 21:30 devel
-rw-rw-r-- 1 liyb liyb 1893 7月 11 2024 frames.gv
drwxrwxr-x 259 liyb liyb 12288 4月 18 2024 gazebo_models
-rw-rw-r-- 1 liyb liyb 9424 10月 27 18:55 path.csv
drwxrwxr-x 3 liyb liyb 4096 3月 1 2024 sim_demo
drwxrwxr-x 13 liyb liyb 4096 12月 13 13:25 src
2. grep 查找文件中的字符串
- -r:搜索目录需要递归
- -i:搜索内容不区分大小写
- -n:结果中显示行数
# 指定搜索文件夹
liyb@lyb:~/catkin_ws$ grep "include" ./ -r #递归搜索当前目录中所有的include
...
# 指定搜索文件
liyb@lyb:~/catkin_ws$ grep "numPY" ./src/skills.py
liyb@lyb:~/catkin_ws$ grep "numPY" ./src/skills.py -i
import numpy as np
# 显示行数
liyb@lyb:~/catkin_ws$ grep "numPY" ./src/skills.py -in
14:import numpy as np