Linux下find与exec结合使用的妙处

工作中,我们查找某一个文件或者目录名可以用find命令;

查找文件内容是否含某一字符串用可以用grep命令;

但是如果我们想搜索一个目录下 包含某一字符串的文件该怎么办呢?

可以将find和exec结合使用。

搜索README名字的文件:

find . -name 'README'

#把文件找出来并复制到tmp目录 ls -l 命令将它们列出来
find . -name "README" -type f -exec ls -l {} \;

在某个文件中搜索字符串:

grep -n 'Copyright' /home/mysql/mysql_bak/include/my_alloc.h

搜索包含Copyright字符串的文件:

find . -type f -exec grep -l 'Copyright' {} \;

 如果需要将字符串替换,使用sed命令:

linux中sed -i 是直接修改文件内容

sed -i 's/Copyright/Copyright-new/g' /home/mysql/mysql_bak/include/my_alloc.h

 但是在unix小型就上sed没有-i的参数,需要替换内容写到临时文件,在mv改名覆盖:

--unix中的替换

sed 's/Copyright/Copyright-new/g' /home/mysql/mysql_bak/include/my_alloc.h  >tmp.txt
mv tmp.txt >/home/mysql/mysql_bak/include/my_alloc.h 

将以上的各个内容结合起来,写脚本批量的找到含有字符串‘Copyright’内容的文件,并替换为‘Copyright-new’:

1.找出包含字符串的文件

find . -name "Copyright" -type f -exec ls -l {} \; > files.txt

 2.运行脚本替换

#!/bin/sh
for FILE in `cat /home/mysql/files.txt`
do

sed -i 's/Copyright/Copyright-new/g' $FILE

if [ $? -eq 0 ]
then
 echo "$FILE has been changed!"
 else
 echo "$FILE change error!"
 fi
done

参考文章:

Linux下find与exec如何结合使用 - 系统运维 - 亿速云

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大宇进阶之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值