
Linux 基础 Day3文件操作 · 文件查看 · 文件搜索grep系列粤嵌嵌入式培训学习笔记 (第 3 篇)上一篇Linux 基础 Day2终端快捷键 · 文件系统 · 路径 · 文件类型 · 目录操作下一篇内容预告待定环境Ubuntu 22.04 · bash | 2026年7月23日① 概览Day2 学会了找东西路径、目录Day3 开始真正操作文件——创建、删除、复制、移动、查看、搜索。模块涉及命令一句话文件操作 ⭐touchrmcpmv增删改移rm递归删除机制是重点文件查看catmorelessheadtail小文件cat大文件less看头尾用head/tail文件搜索 ⭐grepfindlocatewhichgrep 四大选项 正则行首行尾 / find 五大条件 / locate 快速查 / which 查命令位置管道与输出|echo管道串联命令 / echo 输出 覆盖写入/ 追加写入② 文件操作 ⭐2.1 touch — 创建文件touch文件路径注意touch的本职是更新文件时间戳文件不存在时才顺便创建。# 创建单个文件yueqianst-vm:/mnt/hgfs/linux/20260723$touchtest1.txt yueqianst-vm:/mnt/hgfs/linux/20260723$ls-l总计0-rwxrwxrwx1root root01月11970test1.txt# 批量创建多个文件空格分隔yueqianst-vm:/mnt/hgfs/linux/20260723$toucha.txt b.txt c.txt yueqianst-vm:/mnt/hgfs/linux/20260723$toucha.c# 文件类型靠后缀区分# 用通配符只看 .txt 文件yueqianst-vm:/mnt/hgfs/linux/20260723$ls-l*.txt-rwxrwxrwx1root root01月11970a.txt-rwxrwxrwx1root root01月11970b.txt-rwxrwxrwx1root root01月11970c.txt-rwxrwxrwx1root root01月11970test1.txt2.2 rm — 删除文件或目录核心规则删什么要不要-r举例删文件不需要rm a.txt删目录必须加rm -r dir/递归删除机制重点理解目录结构 aDir1 ├── bDir1 │ ├── cFile1 │ └── cFile2 └── bDir2 ├── cFile1 └── cFile2执行rm -r ./aDir1的过程从外层向内层查找 → 从内层向外层删除① 删除./aDir1/bDir1/cFile1 最内层文件 ② 删除./aDir1/bDir1/cFile2 最内层文件 ③ 删除./aDir1/bDir1 空目录 ④ 删除./aDir1/bDir2/cFile1 最内层文件 ⑤ 删除./aDir1/bDir2/cFile2 最内层文件 ⑥ 删除./aDir1/bDir2 空目录 ⑦ 删除./aDir1 空目录一句话想删目录先把它掏空。实操演示yueqianst-vm:/mnt/hgfs/linux/20260723$mkdir-pless01/a/b less02/a/b less03/a less04/a test01 yueqianst-vm:/mnt/hgfs/linux/20260723$touchless01/a/b/demo01.c test01/demo01.c demo01.c demo02.c demo01.txt# 删文件直接 rm不需要 -ryueqianst-vm:/mnt/hgfs/linux/20260723$rmdemo01.c# ✅ 删文件成功# 删目录不加 -r 就报错yueqianst-vm:/mnt/hgfs/linux/20260723$rmless01 rm: 无法删除less01:是一个目录# ❌ 报错yueqianst-vm:/mnt/hgfs/linux/20260723$rm-rless01# ✅ 递归删除# 批量删除目录yueqianst-vm:/mnt/hgfs/linux/20260723$rm-rless02 less03# 交互式删除-i每一步都确认yueqianst-vm:/mnt/hgfs/linux/20260723$rm-riless04 rm: 是否进入目录less04yesrm: 是否删除目录less04/ayesrm: 是否删除目录less04 no# 这里选了 no目录保留# 通配符批量删yueqianst-vm:/mnt/hgfs/linux/20260723$rm-r*.txt test*重要选项选项功能使用场景-r递归删除目录及其内容删除目录时必须使用-f强制删除不确认批量删除或脚本中使用-rf强制递归删除⚠️ 危险操作删了无法恢复⚠️rm -rf没有回收站。养成习惯删之前先ls确认。2.3 cp — 复制文件或目录cp[选项]源路径 目标路径基本用法场景命令说明文件 → 目录cp test1.txt less03/复制文件到目录文件名不变目录 → 目录cp -r aDir less03/复制目录必须-r批量复制cp -r aDir bDir less03/多个源一次性复制到目标拷贝 重命名如果目标是文件名cp会在复制的同时重命名# 实操演示yueqianst-vm:/mnt/hgfs/linux/20260723$mkdirless01 less02 less03 yueqianst-vm:/mnt/hgfs/linux/20260723$mkdir-paDir/aDir1 bDir/bDir1 yueqianst-vm:/mnt/hgfs/linux/20260723$touchtest1.txt less01/test1.txt less02/test1.txt# ----- 拷贝到目录 -----yueqianst-vm:/mnt/hgfs/linux/20260723$cptest1.txt less03 yueqianst-vm:/mnt/hgfs/linux/20260723$lsless03 test1.txt# 名字不变# ----- 拷贝 重命名 -----# 目标是个文件名触发重命名yueqianst-vm:/mnt/hgfs/linux/20260723$cptest1.txt less02/test2-副本.txt yueqianst-vm:/mnt/hgfs/linux/20260723$lsless02 test1.txt test2-副本.txt# 同一目录下拷贝重命名yueqianst-vm:/mnt/hgfs/linux/20260723$cptest1.txt test1-副本.txt yueqianst-vm:/mnt/hgfs/linux/20260723$lstest1.txt test1-副本.txt aDir bDir less01 less02 less03常用选项选项功能-r递归复制复制目录必须加-i目标已有同名文件时询问是否覆盖# -i 交互确认目标已有 test1.txt问你要不要覆盖yueqianst-vm:/mnt/hgfs/linux/20260723$cp-itest1.txt less03 cp: 是否覆盖less03/test1.txtyes2.4 mv — 移动 / 重命名mv[选项]源路径 目标路径核心逻辑移动和重命名是同一个命令——因为重命名本质上是把文件移到新名字的位置。命令效果场景mv a.txt ../bDir/移动a.txt 移到 …/bDir 目录下bDir 必须已存在mv a.txt b.txt重命名同一目录下改名mv a.txt ../b.txt移动 重命名移走并改名mv aDir bDirbDir 存在→移动bDir 不存在→重命名看目标存不存在mv less02 less03 *.txt aDir批量移动多个源一起移# 演示mv aDir bDir 的两种情况mkdiraDir bDirmvaDir bDir# bDir 存在 → aDir 移入 bDir 内部lsbDir/# aDirmkdiraDirmvaDir newDir# newDir 不存在 → 重命名ls# newDir没有 aDir 了mv移目录不需要-r——这一点和cp不一样别搞混。③ 文件查看小文件用cat大文件用less看头尾用head/tail。3.1 cat — 查看文件内容小文件cat/proc/cpuinfo# 全量输出cat-n/proc/cpuinfo# -n 显示行号3.2 more — 分页查看more/proc/cpuinfo快捷键功能空格键向下翻一页回车键向下翻一行q退出3.3 less — 高级分页推荐比more强大支持上下翻less/proc/cpuinfoless-M/proc/cpuinfo# -M左下角显示当前行范围快捷键功能空格键向下翻一页b向上翻一页方向键 ↑↓向上/向下翻一行q退出more vs lessmore只能往下翻less能上下翻。记法less is moreless 功能更多。3.4 head — 查看文件头部head/proc/cpuinfo# 默认前 10 行head-n5/proc/cpuinfo# 前 5 行写法一head-5/proc/cpuinfo# 前 5 行写法二简写3.5 tail — 查看文件尾部tail/proc/cpuinfo# 默认后 10 行tail-n5/proc/cpuinfo# 后 5 行写法一tail-5/proc/cpuinfo# 后 5 行写法二简写④ 文件搜索 ⭐ grepgrep[选项]待查找的字符串文件路径# 引号可以省略两种写法等价grep[选项]待查找的字符串 文件路径常用选项选项功能举例-n显示行号grep -n apicid /proc/cpuinfo-c统计匹配行数返回数字grep -c apicid /proc/cpuinfo-i忽略大小写grep -i APICID /proc/cpuinfo-v反向搜索显示不包含的行grep -v processor /proc/cpuinfo实操演示# 基本搜索yueqianst-vm:/mnt/hgfs/linux/20260723$grep-napicid/proc/cpuinfo14:apicid:015:initial apicid:041:apicid:142:initial apicid:1...# 搜索不存在的字符串 → 无输出不会报错yueqianst-vm:/mnt/hgfs/linux/20260723$grep-niapicid2/proc/cpuinfo yueqianst-vm:/mnt/hgfs/linux/20260723$# 空什么都没找到# -c统计匹配行数yueqianst-vm:/mnt/hgfs/linux/20260723$grep-ciapicid/proc/cpuinfo8# -v反向搜索yueqianst-vm:/mnt/hgfs/linux/20260723$grep-cvapicid/proc/cpuinfo100⚠️-c和-n不要一起用——统计只返回数字显示行号没意义。grep 正则表达式^和$让 grep 定位更精确。行首匹配^以指定字符序列开头grep-n^apicid/proc/cpuinfo# 只匹配 apicid 开头的行# apicid : 0 ← 匹配# initial apicid : 0 ← 不匹配开头是 initial行尾匹配$以指定字符序列结尾grep-n[0-9]$/proc/cpuinfo# 以数字结尾的行grep-n[A-Za-z]$/proc/cpuinfo# 以字母结尾的行[0-9]表示 0~9 任意一个数字[A-Za-z]表示任意一个字母。find — 查找文件或目录grep搜文件内容find搜文件本身——从磁盘遍历查找精确但慢。find检索路径[选项]参数五大选项选项功能举例-name按名搜区分大小写find ./ -name test.c-iname按名搜忽略大小写find ./ -iname test1.txt-type按类型搜d目录 /f文件 /l链接-size按大小搜3M大于 /-3M小于-mtime按修改时间搜-124h内 /77天前-size默认单位是 512 字节。加 M 表示 MB如3M 大于 3MB。实操演示# 当前目录找 test1.txt忽略大小写find./-inametest1.txt# 根目录下大于 3MB 的文件find/-size3M2/dev/null|head-10# 只找 /var/log 下的 .log 普通文件find/var/log-typef-name*.log2/dev/null# 当前目录下找名为 src 的目录find./-typed-namesrc# 24 小时内修改过的文件find/-mtime-12/dev/null|head-10# 不加单位时的默认单位3 单位 3 × 512 1536 字节find/-size32/dev/null|head-10locate — 快速查找find搜磁盘慢但准locate搜数据库快但可能过时。locate[选项]文件或目录选项功能-c统计文件个数-i忽略大小写locate-itest.c# 忽略大小写搜无需指定路径locate-c*.txt# 统计有多少 .txt 文件⚠️locate不是实时搜磁盘而是查预建的文件数据库updatedb每天自动更新一次。新创建的文件可能搜不到需手动sudo updatedb。 find vs locatefindlocate查什么磁盘数据库速度慢快准度准实时可能过时需指定路径需要不需要which — 查找命令位置想知道一个命令的绝对路径在哪用whichwhichls# 输出/usr/bin/ls管道|— 命令组合把前一个命令的输出变成后一个命令的输入# 先 ls -l 列出所有文件再从结果中 grep 筛选出 .txt 结尾的ls-l|grep.txt$# 先 cat 打开 cpuinfo再用 grep -c 统计 cpuid 出现次数cat/proc/cpuinfo|grep-ccpuid管道|vs 重定向管道连接命令重定向连接文件。echo — 输出字符串echo字符串|文件路径符号效果覆盖写入先清空文件再写入文件不存在则创建追加写入不清空在文件末尾添加# 覆盖写入之前的内容被清空echoyueqian is good!yueqian.txt# 追加写入保留之前内容新内容加在末尾echokaige is good!yueqian.txt⑤ 踩坑记录 ⭐坑1rm less01报是一个目录现象rm: 无法删除 less01: 是一个目录根因删文件不需要-r但删目录必须加-r递归删除解决rm -r less01坑2cp aDir报omitting directory现象cp: -r not specified; omitting directory aDir根因cp复制目录必须加-r解决cp -r aDir backup/ 对比mv移动目录不需要-r。cp -r要加mv不用加这是最容易混的地方。坑3grep搜不到内容时没报错现象grep xxx file执行后啥也没输出不确定是没搜到还是命令写错了根因grep找不到匹配内容时就是静默无输出不是报错解决不确定时用grep -c看统计数返回 0 说明确实没有⑥ 小结今天完成touch创建 →rm -r递归删除 →cp -r递归复制 拷贝重命名 →mv移动/重命名 → 5 种查看cat/more/less/head/tail→grep四大选项 正则^$→find五大条件 →locate快速查 →which查命令位置 → 管道|→echo/。下一篇待更新。本文首发于 CSDN转载请注明出处。