Linux命令过关挑战

1.第一关:本次挑战中有一些带有不同文件扩展名的文件。请递归删除当前工作目录中所有扩展名为.doc 的文件

bash 复制代码
 find . -type f -name "*.doc" -delete 

解析:

  • find:就是 "查找" 的意思,专门用来在电脑里找文件或文件夹。
  • .:代表 "当前文件夹"(你现在打开的这个文件夹)。
  • -type f:只找 "文件"(排除文件夹,避免误删文件夹)。
  • -name "*.doc":只找名字符合 "随便什么字符 + .doc" 的文件(比如 报告.docnotes123.doc 都算)。
  • -delete:找到符合条件的文件后,直接删掉它们。

2.第二关:当前工作目录中有一个名为 access.log 的文件。请打印该文件中所有包含字符串 "GET" 的行

bash 复制代码
grep "GET" access.log

解析:

  • grep 就像 "搜索小助手",专门在文件里找包含特定内容的行。
  • "GET" 是要找的目标内容(这里就是 "GET" 这个词)。
  • access.log 是要搜索的文件(就是当前文件夹里叫 access.log 的那个文件)。

3.第三关:打印当前目录下所有包含字符串 "500" 的文件,每个文件名单独占一行(只显示文件名,不显示路径)

bash 复制代码
grep -l "500" *

解析:

  • grep:负责在文件里搜索内容的工具。
  • -l(小写 L):这个选项表示 "只显示包含目标内容的文件名",而不是显示具体的行。-l--files-with-matches 这个长选项的缩写,对应的单词是 list (列表、列出)。它的设计逻辑是:当你用 grep 搜索内容时,默认会显示 "包含匹配内容的行";而加上 -l 后,它就不再显示具体的行,而是只列出 "包含匹配内容的文件名列表" ------ 相当于告诉 grep:"不用给我看具体内容了,把符合条件的文件名字列出来就行"。
  • "500":要搜索的目标字符串。
  • *:代表当前目录下的所有文件(不包含子目录里的文件,只看当前目录)。

4.第四关:打印当前目录下所有文件名以 "access.log" 开头的文件的相对路径,每个路径单独占一行。

bash 复制代码
find . -name "access.log*"

解析:

  • find:专门用来找文件的位置
  • .:表示当前目录
  • -name "access.log*":表示要找名字以access.log开头的文件

思考:

  1. 为什么不是只显示文件名? 因为 find 设计的初衷是 "定位文件在哪里",而不仅仅是 "叫什么名字"。如果只显示文件名,当不同目录下有同名文件时(比如子目录里也有 access.log),你就分不清它们的位置了。

    相对路径既保留了文件名,又明确了文件在当前目录下的位置,更实用。

  2. find 命令的默认行为: find 是用来 "查找文件并显示其完整位置" 的工具。它的输出默认会包含从起始目录开始的路径,而不只是光秃秃的文件名。

    这里的起始目录是 .(当前目录),所以输出的就是 "当前目录 + 文件名" 的组合,也就是相对路径

相关推荐
为思念酝酿的痛8 小时前
POSIX信号量
linux·运维·服务器·后端
专业白嫖怪8 小时前
什么是docker
运维·docker·容器
ccddsdsdfsdf8 小时前
DBeaver怎么链接mongoDB
数据库·mongodb
丷丩9 小时前
Postgresql基础实践教程(十一)各种Join
数据库·postgresql·join
星夜夏空999 小时前
FreeRTOS学习(4)——内存映射
数据库·学习·mongodb
人还是要有梦想的9 小时前
linux下用搜狗输入法,中英文切换
linux·运维·服务器
北京智和信通9 小时前
某部队IT基础设施及机房动环统一运维建设实例
运维·网管平台·网管软件·网络管理系统·网络运维平台·网络运维系统
乐维_lwops9 小时前
从 “救火运维” 到 “自动驾驶”:运维智能体到底解决了什么?
运维·人工智能·运维智能体
bush410 小时前
嵌入式linux学习记录二
linux·运维·学习
9分钟带帽10 小时前
linux_通过NFS挂载远程服务器的硬盘
linux·服务器