跳转到主要内容

Linux 下批量替换文件内容脚本

#!/bin/bash
OLD="ABCDEF"
NEW="123456"
DPATH="/home/you/foo/*.txt"
BPATH="/home/you/bakup/foo"
TFILE="/tmp/out.tmp.$$"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
  if [ -f $f -a -r $f ]; then
    /bin/cp -f $f $BPATH
   sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
  else
   echo "Error: Cannot read $f"
  fi
done
/bin/rm $TFILE

以上代码,将文件 ABCDEF 字符,替换成 123456

linux下查找某目录下所有文件包含某字符串的命令

#从文件内容查找匹配指定字符串的行:
$ grep "被查找的字符串" 文件名

#从文件内容查找与正则表达式匹配的行:
$ grep –e “正则表达式” 文件名

#查找时不区分大小写:
$ grep –i "被查找的字符串" 文件名

#查找匹配的行数:
$ grep -c "被查找的字符串" 文件名

#从文件内容查找不匹配指定字符串的行:
$ grep –v "被查找的字符串" 文件名

#从根目录开始查找所有扩展名为.txt的文本文件,并找出包含"linux"的行
find . -type f -name "*.txt" | xargs grep "linux"