Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第五天

Linux系统文件与目录内容检索

一、文件和目录内容检索处理命令

1、grep筛选

grep [选项] file
选项作用
-i忽略大小写。
-v反转匹配,只显示不匹配的行。
-c计数,只输出匹配行的数量。
-n显示匹配行及其行号。
-l(小写L)只输出包含匹配字符串的文件名。
-L只输出不包含匹配字符串的文件名。
-q(暂时不用)静默模式,不输出任何匹配信息。
-E使用扩展正则表达式。
-o只输出匹配到的部分,而不是整行内容。
-A [NUM]打印匹配行和之后的[NUM]行。
-B [NUM]打印匹配行和之前的[NUM]行。
-C [NUM] 或 --context=[NUM]打印匹配行及其前后的[NUM]行。
-P使用Perl正则表达式。
-r 或 --recursive递归搜索目录中的文件。
-R 或 --text将二进制文件当作文本文件处理。
-s 或 --no-messages不显示错误信息。

1.1.基本grep使用

题目要求

  1. 在用户主目录下创建一个名为grep_practice的目录

  2. grep_practice目录中创建fruits.txt文件

  3. 使用grep命令完成以下操作:

    • 查找包含"apple"的行(忽略大小写)

    • 查找不包含"banana"的行

    • 统计包含"orange"的行数

    • 显示包含"grape"的行及其行号

# 1. 创建目录
mkdir ~/grep_practice

# 2. 进入目录并创建文件
cd ~/grep_practice
touch fruits.txt

# 3. 使用cat添加内容
cat <<EOF >> fruits.txt
Apple
Banana
Orange
Grape
apple pie
banana bread
orange juice
grape jelly
EOF

# 4. 执行grep操作
# 查找包含"apple"的行(忽略大小写)
grep -i "apple" fruits.txt

# 查找不包含"banana"的行
grep -v "banana" fruits.txt

# 统计包含"orange"的行数
grep -c "orange" fruits.txt

# 显示包含"grape"的行及其行号
grep -n "grape" fruits.txt

1.2.递归搜索与文件处理

题目要求

  1. ~/grep_practice目录下创建logs子目录

  2. logs目录中创建三个日志文件:

    • system.log

    • app.log

    • network.log

  3. 使用grep命令完成以下操作:

    • 递归查找所有包含"ERROR"的文件名

    • 递归查找所有包含"WARNING"但不显示匹配内容

    • 递归统计所有文件中"INFO"的出现次数

    • 递归查找不包含"DEBUG"的文件

# 1. 创建logs目录
mkdir ~/grep_practice/logs

# 2. 创建并填充日志文件
# system.log
cat <<EOF >> ~/grep_practice/logs/system.log
[INFO] System started
[ERROR] Disk full
[WARNING] Memory low
EOF

# app.log
cat <<EOF >> ~/grep_practice/logs/app.log
[INFO] Application loaded
[DEBUG] Initializing modules
[WARNING] Configuration missing
EOF

# network.log
cat <<EOF >> ~/grep_practice/logs/network.log
[INFO] Network connected
[ERROR] Connection timeout
[DEBUG] Resolving host
EOF

# 3. 执行grep操作
# 递归查找所有包含"ERROR"的文件名
grep -rl "ERROR" ~/grep_practice

# 递归查找所有包含"WARNING"但不显示匹配内容
grep -r "WARNING" ~/grep_practice -l

# 递归统计所有文件中"INFO"的出现次数
grep -rc "INFO" ~/grep_practice

# 递归查找不包含"DEBUG"的文件
grep -rL "DEBUG" ~/grep_practice

2、find查找

选项作用
-name根据关键字查找,支持通配符*
-type根据文件类型查找
-size根据文件大小查找
-maxdepth指定查找时的路径深度
-exec将find命令查找到的内容交给-exec后面的命令再次处理
-user根据文件的属主进行查找
-perm根据文件的权限进行查找

2.1.基本find使用

题目要求

  1. 在用户主目录下创建find_practice目录

  2. find_practice目录中创建:

    • 3个文本文件:file1.txtfile2.lognotes.txt

    • 2个子目录:logsbackups

    • logs目录中创建system.log文件

  3. 使用find命令完成以下操作:

    • 查找所有.txt文件

    • 查找所有目录

    • 查找大于1KB的文件

    • 查找空文件

    • 查找属主为当前用户的文件

# 1. 创建目录和文件
mkdir ~/find_practice
cd ~/find_practice

# 创建文件
touch file1.txt file2.log notes.txt

# 创建子目录和文件
mkdir logs backups
touch logs/system.log

# 添加一些内容使文件大小不同
echo "This is a test file" > file1.txt
echo "Another test file with more content" > file2.log

# 2. 执行find操作
# 查找所有.txt文件
find ~/find_practice -name "*.txt"

# 查找所有目录
find ~/find_practice -type d

# 查找大于1KB的文件
find ~/find_practice -size +1k

# 查找空文件
find ~/find_practice -empty

# 查找属主为当前用户的文件
find ~/find_practice -user $(whoami)

2.2.高级find使用与处理

题目要求

  1. ~/find_practice目录中创建:

    • 文件important.doc(大小:10KB)

    • 文件backup.tar(大小:100KB)

    • 文件temp.txt(空文件)

  2. 使用find命令完成以下操作:

    • 查找所有大于5KB的文件并显示详细信息

    • 查找所有.txt文件并删除

    • 查找空文件并添加内容

    • 查找所有.log文件并统计数量

    • 查找所有目录并修改权限

# 1. 创建大文件
cd ~/find_practice

# 创建10KB文件
dd if=/dev/zero of=important.doc bs=1K count=10

# 创建100KB文件
dd if=/dev/zero of=backup.tar bs=1K count=100

# 创建空文件
touch temp.txt

# 2. 执行find操作
# 查找所有大于5KB的文件并显示详细信息
find ~/find_practice -size +5k -exec ls -lh {} \;

# 查找所有.txt文件并删除
find ~/find_practice -name "*.txt" -exec rm -f {} \;

# 查找空文件并添加内容
find ~/find_practice -empty -exec sh -c 'echo "This was empty" > {}' \;

# 查找所有.log文件并统计数量
find ~/find_practice -name "*.log" | wc -l

# 查找所有目录并修改权限为755
find ~/find_practice -type d -exec chmod 755 {} \;

# 验证目录权限
find ~/find_practice -type d -exec ls -ld {} \;

3、sort排序

选项作用
-f忽略大小写,会将小写字母都转换为大写字母来进行比较
-b忽略每行前面的空格
-n按照数值进行排序
-r反向排序
-u等同于uniq,表示相同的数据仅显示一行
-t指定字段分隔符,默认使用[Tab]键分隔
-k指定排序字段
-o<输出文件>将排序后的结果转存至指定文件
-h友好显示

3.1.基本排序操作

题目要求

  1. 在用户主目录下创建sort_practice目录

  2. sort_practice目录中创建numbers.txt文件,内容如下:

    10
    5
    3
    8
    1
    15
    7
    12
  3. 使用sort命令完成以下操作:

    • 按数值升序排序

    • 按数值降序排序

    • 按数值升序排序并将结果保存到sorted_numbers.txt

    • 按数值降序排序并将结果保存到reverse_sorted_numbers.txt

# 1. 创建目录和文件
mkdir ~/sort_practice
cd ~/sort_practice

# 2. 创建numbers.txt文件
cat <<EOF >> numbers.txt
10
5
3
8
1
15
7
12
EOF

# 3. 执行sort操作
# 按数值升序排序
sort -n numbers.txt

# 按数值降序排序
sort -n -r numbers.txt

# 按数值升序排序并保存结果
sort -n numbers.txt -o sorted_numbers.txt

# 按数值降序排序并保存结果
sort -n -r numbers.txt -o reverse_sorted_numbers.txt

# 4. 查看结果文件
cat sorted_numbers.txt
cat reverse_sorted_numbers.txt

3.2.多字段排序与复杂数据

题目要求

  1. ~/sort_practice目录中创建employees.csv文件,内容如下:

    John,Smith,35,50000
    Jane,Doe,28,45000
    Bob,Johnson,42,60000
    Alice,Williams,35,55000
    Mike,Brown,28,40000
  2. 使用sort命令完成以下操作:

    • 按年龄(第3列)升序排序

    • 按年龄降序排序

    • 按年龄升序排序,相同年龄按工资降序排序

    • 按姓氏(第2列)字母顺序排序

# 1. 创建employees.csv文件
cd ~/sort_practice

cat <<EOF >> employees.csv
John,Smith,35,50000
Jane,Doe,28,45000
Bob,Johnson,42,60000
Alice,Williams,35,55000
Mike,Brown,28,40000
EOF

# 2. 执行sort操作
# 按年龄(第3列)升序排序
sort -t ',' -k 3n employees.csv

# 按年龄降序排序
sort -t ',' -k 3nr employees.csv

# 按年龄升序排序,相同年龄按工资降序排序
sort -t ',' -k 3n -k 4nr employees.csv

# 按姓氏(第2列)字母顺序排序
sort -t ',' -k 2 employees.csv

# 3. 可选:将结果保存到文件
sort -t ',' -k 3n employees.csv -o sorted_by_age.csv
sort -t ',' -k 2 employees.csv -o sorted_by_lastname.csv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值