Linux 批量查找与替换的常用命令
目录
- 1. 批量查找
- 1.1 按照文件类型查找
- 1.2 按照文件内容查找
- 2. 批量替换
服务器上一个很实用的功能就是批量查找与替换了,在需要找什么文件或者内容的时候就可以一键查找,一键替换了
1. 批量查找
查找分为两种,第一种是查找文件类型,第二种是查找文件内容
1.1 按照文件类型查找
第一个命令是比较常用的
- 查找
/home/worker
目录及其子目录下的所有以.log
结尾的文件,不包括目录,-type
表示文件类型f
表示普通文件
find /home/worker -type f -name "*.log"
- 查找
/home/worker
目录及其子目录下所有log.txt
的文件和目录
find /home/worker -name "log.txt"
- 查找
/home/worker
目录及其子目录下所有log.txt
的文件和目录和以.pdf
结尾的文件和目录,-o
代表或者的意思
find /home/worker -name "log.txt" -o -name "*.pdf"
- 查找
/home/worker
目录及其子目录下的所有以.txt
结尾文件,忽略大小写,-i
表示忽略大小写
find /home/worker -iname "*.txt"
- 查找
/home/worker
目录及其子目录下最近7
天内修改过的文件
find /home/worker -mtime -7
- 查找
/home/worker
目录及其子目录下文件大于10M
的文件
find /home/worker -size +10M
1.2 按照文件内容查找
第一个命令是比较常用的
- 查找
/data/dev
目录下拓展名为.txt
文件中包含单词"example"
的文件 -
这个是批量查找最快的命令,比单独使用
grep
命令快,因为find命令查找起来很快并且会过滤掉很多文件
find /data/dev -type f -name "*.txt" -exec grep "example" {} +;
- 在当前目录的
config
文件夹下的文件中查找包含"hello"
的行
grep "hello" ./config/*
- 在
file.txt
文件中查找包含"hello"
或"Hello"
的行,-i
表示忽略大小写
grep -i "hello" file.txt
- 在
/home
目录及其子目录下的所有文件中查找包含"hello"
的行,-r
表示递归查找
grep -r "hello" /home
- 在
file.txt
文件中查找包含"hello"
的行,并显示行号,-n
表示显示行号
grep -n "hello" file.txt
- 在
file.txt
文件中查找包含"hello"
的整个单词的行,-w
表示整个字符匹配,比如某个文件中的文件内容是testaa
就匹配不出来
grep -w "hello" file.txt
- 在
config
文件夹中查找包含"hello"
的文件,-l
表示只显示文件
grep -l "hello" ./config/*
2. 批量替换
第二个命令是比较常用的
- 将
test.log
文件中的所有aadd
替换成ccdd
sed -i 's#aabb#ccdd#g' test.log
- 将
/data/dev
目录及其子目录下所有拓展名为.txt
文件中整个单词为apple
替换为orange
,比如某个文件中的文件内容是:testapple
就不会被替换
find /home/temp -type f "*.txt" -exec sed -i 's#apple#orange#g' {} +;
- 第二种写法
find /data/dev -type f -name "*.txt" -exec sed -i 's/apple/orange/g' {} +;