228 文字
1 分
再帰置換するシェルスクリプト - ファイル名 と 中身

概要#

再帰的処理を行い、置換をするプログラムを2つ作りました。

  1. ファイルの中身を変更
  2. ファイル名を変更

0. ワンライナーあった#

Terminal window
find . -name "*.html" -type f -exec sed -i '' -e 's/TextToReplace/ReplacementText/' {} \;

1. ファイルの中身を変更#

https://matsu.teraren.com/static/replace_contents.sh

#!/bin/bash
#-----------------------------------------------
# Replace SEARCH string with REPLACEMENT string for the contents.
USAGE="Usage: % ./replace_contents.sh search replacement"
#
# @author Yuki Matsukura
# @version $Id:$
#-----------------------------------------------
# String of partical match
FILEMATCH="*"
# String of partical match
SEARCH=$1
# String of replacement
REPLACEMENT=$2
if [ $# -ne 2 ]; then
echo "Insufficient parameter error" 1>&2
echo $USAGE 1>&2
exit 1
fi
for i in `find . -type f -name "*$FILEMATCH*"`
do
# contents replacement
TEMPFILE=`mktemp`
sed "s/$SEARCH/$REPLACEMENT/g" $i > $TEMPFILE
mv $TEMPFILE $i
done

2. ファイル名を変更#

https://matsu.teraren.com/static/replace_filename.sh

#!/bin/bash
#-----------------------------------------------
# Replace SEARCH string with REPLACEMENT string for filename.
USAGE="Usage: % ./replace_filename.sh search replacement"
#
# @author Yuki Matsukura
# @version $Id:$
#-----------------------------------------------
# String of partical match
SEARCH=$1
# String of replacement
REPLACEMENT=$2
if [ $# -ne 2 ]; then
echo "Insufficient parameter error" 1>&2
echo $USAGE 1>&2
exit 1
fi
for i in `find . -type f -name "*$SEARCH*"`
do
# file name replacement
REPLACEMENT_FILE=`echo $i | sed "s/$SEARCH/$REPLACEMENT/g"`
mv $i $REPLACEMENT_FILE
done

https://amzn.to/3GxF3Vh

再帰置換するシェルスクリプト - ファイル名 と 中身
https://blog.teraren.com/posts/再帰置換するシェルスクリプト-ファイル名-と-中/
作者
Yuki Matsukura
公開日
2010-12-09
ライセンス
CC BY-NC-SA 4.0

コメント