
Linux:几个重要的文件处理命令
发布日期:2025-04-10 21:57:16
浏览次数:10
分类:精选文章
本文共 3179 字,大约阅读时间需要 10 分钟。
Shell常用的处理文本命令
基础命令工具
find、grep、sort、uniq、sed、awk、cut、tr、wc、xargs、pasteShell脚本的编写原则
命令应尽量单行书写,便于阅读和维护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:查找文件的元数据修改时间
- -atime:查找最近访问的文件
按大小搜索
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:忽略大小写的正则表达式
- -regex:普通表达式
输出文件名
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脚本编写提供了丰富的工具,能够高效处理文本和文件操作。
发表评论
最新留言
很好
[***.229.124.182]2025年04月30日 05时27分42秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LNMPA1.6部署记录(Ubuntu)
2023-02-06
LNMP与LAMP的工作原理
2023-02-06
LNMP安装与配置
2023-02-06
LNMP安装了哪些软件?安装目录在哪?
2023-02-06
LNMP安装成功的界面
2023-02-06
LNMP架构 nginx默认虚拟主机
2023-02-06
Lnmp架构之PHP
2023-02-06
LNMP架构部署实战(附LNMP源码包和CRUD测试Web网站)
2023-02-06