Linux:几个重要的文件处理命令
发布日期:2025-04-10 21:57:16 浏览次数:10 分类:精选文章

本文共 3179 字,大约阅读时间需要 10 分钟。

Shell常用的处理文本命令

基础命令工具

find、grep、sort、uniq、sed、awk、cut、tr、wc、xargs、paste

Shell脚本的编写原则

命令应尽量单行书写,便于阅读和维护


1. Find 文件查找

基础操作

  • 查找特定文件类型

    find . \( -name "*.txt" -o -name "*.pdf" \) -print
  • 使用正则表达式查找文件

    find . -regex ".*\(\.txt|\.pdf\)$"
    • -iregex:忽略大小写的正则表达式
  • 排除特定文件类型

    find . ! -name "*.txt" -print
  • 指定搜索深度

    find . -maxdepth 1 -type f
    • -maxdepth 1:只查找当前目录下的文件

定制搜索

  • 按文件类型搜索

    find . -type d -print
    • -type d:只列出目录
    • -type f:文件或符号链接
  • 按时间搜索

    • -atime:查找最近访问的文件
      find . -atime 7 -type f -print
    • -mtime:查找文件的修改时间
    • -ctime:查找文件的元数据修改时间
  • 按大小搜索

    find . -type f -size +2k
    • +2k:表示大于2k字节的文件
  • 按权限搜索

    find . -type f -perm 644 -print
    • 644:常见的文件权限设置
  • 按用户搜索

    find . -type f -user weber -print

查找后的后续操作

  • 删除匹配文件

    find . -type f -name "*.swp" -delete
  • 执行命令

    find . -type f -user root -exec chown weber {} \;
    • {}:表示替换为实际文件名
  • 复制文件

    find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;
    • +10:查找修改时间超过10天的文件
  • 组合命令

    find . -type f -mtime +10 -name "*.txt" -exec ./commands.sh {} \;
    • commands.sh:自定义脚本
  • -print的定界符

    • 默认使用换行符(\n)
    • -print0:使用空字节(\0)作为定界符

2. Grep 文本搜索

常用命令格式

  • 基础用法

    grep "match_patten" file
  • 常用参数

    • -o:只输出匹配内容
    • -v:输出未匹配内容
    • -c:统计匹配次数
    • -n:显示匹配行号
    • -i:忽略大小写
    • -l:只输出文件名
  • 在多级目录中递归搜索

    grep "class" . -R -n
    • -R:递归搜索子目录
  • 匹配多个模式

    grep -e "class" -e "virtual" file
  • 使用正则表达式

    • -regex:普通表达式
      grep -r ".*\(\.txt|\.pdf\)" .
    • -iregex:忽略大小写的正则表达式
  • 输出文件名

    grep -lZ "test" file* | xargs -0 rm
    • -Z:输出文件名时使用空字节(\0)

3. Sort 排序

常用命令格式

  • 按数字排序
    sort -nrk 1 data.txt
  • 按字典序排序
    sort -bd data
    • -d:忽略前导空白字符

4. Uniq 消除重复行

基础操作

  • 消除重复行
    sort unsort.txt | uniq
  • 统计重复行的次数
    sort unsort.txt | uniq -c
  • 找出重复行
    sort unsort.txt | uniq -d
  • 指定比较起点
    sort unsort.txt | uniq -s 1
    • -s 1:从第二个字符开始比较

5. Sed 文本替换利器

基础操作

  • 替换文本

    sed 's/text/replace_text/' file
  • 全局替换

    sed 's/text/replace_text/g' file
  • 替换空白行

    sed '/^$/d' file
  • 变量转换

    echo this is an example | sed 's/\w+/&/g' > this%20is%20an%20example
    • &:转义为 HTML 实体
  • 子串匹配

    sed 's/hello\([0-9]\)/\1/'
    • \1:引用括号内的内容

6. Awk 数据流处理工具

命令说明

  • 基本结构

    awk '    BEGIN {      statements    }    statements    END {      statements    }'
  • 打印当前行

    echo -e "line1\nline2" | awk '{print}'
  • 打印特定字段

    awk '{print $2, $3}' file
  • 统计文件行数

    awk 'END { print NR }' file
  • 累加数字

    echo -e "1\n 2\n 3\n 4\n" | awk '{sum += $1; print sum}'
  • 使用正则表达式过滤行

    awk '/linux/' file
    • -F:指定定界符(默认为空格)
  • 读取命令输出

    echo "grep root /etc/passwd" | awk '{getline cmdout; print cmdout}'
  • 实现循环

    for(i in array){print array[i];}

7. Cut 按列切分文本

基础操作

  • 截取特定字段

    cut -f2,4 filename
  • 去除特定字段

    cut -f3 --complement filename
  • 指定定界符

    cat -f2 -d";" filename
  • 按字段范围切分

    cut -c1-5 file
  • 按字符切分

    cut -c-2 file

8. Tr 进行转换

基础操作

  • 字符转换

    echo 12345 | tr '0-9' '9876543210'
  • 删除字符

    cat file | tr -d '0-9'
  • 求补集

    cat file | tr -c '0-9'
  • 压缩空格

    cat file | tr -s ' '
  • 字符类匹配

    tr '[:lower:]' '[:upper:]'

9. Wc 统计文本信息

基础操作

  • 统计行数
    wc -l file
  • 统计单词数
    wc -w file
  • 统计字符数
    wc -c file

10. Paste 按列拼接文本

基础操作

  • 按列拼接文件
    paste file1 file2
  • 指定定界符
    paste file1 file2 -d ","

11. Xargs 命令行参数转换

基础操作

  • 将多行输出转换为单行
    cat file.txt | xargs
  • 将单行输出转换为多行
    cat single.txt | xargs -n 3
  • 读取命令输出
    find source_dir/ -type f -name "*.cpp" -print0 | xargs -0 wc -l

12. 迭代文件中的内容

迭代每一行

  • while循环
    while read line; do echo $line; done < file.txt
  • cat命令结合循环
    cat file.txt | (while read line; do echo $line; done)

迭代单词

  • for循环
    for word in $line; do echo $word; done

迭代每个字符

  • 字符串切片
    for((i=0; i<${#word}; i++)); do echo ${word:i:1}; done

以上命令和技巧为Shell脚本编写提供了丰富的工具,能够高效处理文本和文件操作。

上一篇:Linux:升级OpenSSL到1.1以上版本
下一篇:Linux:修改yum源

发表评论

最新留言

很好
[***.229.124.182]2025年04月30日 05时27分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章