linux常用文件操作命令

查找特定的文件

find 

语法 find path [options] params

作用:在指定目录下查找文件


find -name "target3.java"

递归查找出当前目录下所有名称为 “target3.java” 的文件,返回路径


find /  -name "target3.java"

从根目录递归查找出所有名称为 “target3.java” 的文件,返回路径


find /  -name "target*"

从根目录递归查找出所有以 “target” 开头的文件,返回路径


find /  -iname "target*"

从根目录递归查找出所有以"target" 开头的文件(不区分文件名大小写),返回路径


可以通过man find 命令查找更多find的使用说明

检索文件内容

grep

语法:grep [options] pattern file

全称: Global Regluar Expression Print
作用:查找文件里符合条件的字符串


grep "moo"  target*

查找出所有target开头的文件里面的包含"moo"的行


grep -o 'engine[[0-9[a-Z]*\]]'

筛选出符合正则表达式的内容


grep -v "grep"

过滤掉包含相关字符串的内容


grep "moo" 

如果后面不带文件名,则会等待输入的行里面获取内容。很明显这和管道操作符"|"很配


管道操作符

|

可将命令连接起来,前一个指令的输出作为后一个指令的输入

find / | grep "target"

达到效果同上面的find / -name "target*"

注意的点:
1、只处理前一个命令正确输出,不处理错误输出
2、右边命令必须能接收标准输入流,否则传递过程中数据会被抛弃
3、常用接收管道输出命令有sed,awk,grep,cut,head,top,less,more,wc,join,sort,split等

结合通配符,组合使用grep命令的筛选和过滤可使得检索文件内容更灵活

grep "moo"  target1.java |  grep -o 'engine[[0-9[a-Z]*\]]'

ps -ef | grep tomcat | grep -v "grep"

对文件内容做统计

awk

语法:awk [options] ‘cmd’ file

  1. 一次读取一行文本,按输入分隔符进行切片切成多个组成部分
  2. 将切片直接保存在内建的变量中,$1,$2…($0表示行的全部)
  3. 支持对单个片段的判断,支持循环判断,默认分隔符为空格

awk '{print $1,$4}' target2.txt

将target2.txt里面以空格作为分隔符的第1列和第4列输出出来


awk '$1=="tcp" && $2==1{print $0}'  target2.txt

将target2.txt里面以空格作为分隔符,第一列等于”tcp“ 第二列等于 1 的所有列打印出来


awk '$1=="tcp" && $2==1 || NR == 1{print $0}'  target2.txt

NR表示行数,添加NR == 1将第一行表头也显示出来


awk -F  "," 'print{$0}' test.txt

指定以逗号作为分隔符"," 查询所有test.txt里面的所有列打印出来(默认是以空格作为分隔符)


grep "moo"  target1.java |  grep -o 'engine[[0-9[a-Z]*\]]' | awk '{enginearr[$1]++}END{for(i in enginearr)print i "\t" enginearr[i]}'

将得到的grep结果做统计,engine相同的累加,后面再将engine以及engine的次数打印出来


批量替换文档里面的内容

sed

语法:sed [options] ‘sed command’ filename

全名 stream editor,流编辑器
适用于对文本的行内容进行处理


sed 's/^Str/String/' replace.java

替换replace.java里面以Str开头的StrString的字符串后,返回替换后的结果 。此时文件内容并未被替换


sed -i 's/^Str/String/' replace.java

加入-i后,就会替换文件里面的内容


sed -i 's/\.$/\;/' replace.java

replace.java里面以点号.结尾的.替换为分号;


sed -i ‘s/jack/me/’ replace.java

replace.java里面的jack替换为me,但是如果一行有两个jack,仅首次符合条件的被替换

所以如果需要整行所有的jack都被替换,需要后面加上g

sed -i 's/jack/me/g' replace.java

sed -i '/^ */d' replace.java

/d表示删除 ,不是对字符串做操作 不用s开头了
删除replace.java里面以空格开头的行


sed -i '/Integet/d' replace.java

也可以按照内容删除,删除包含Integet的行


还有很多其他用法,比如搜索和移动数据等等。这里仅记录常用的文件操作命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值