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

概要#

再帰的処理を行い、置換をするプログラムを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
Amazon商品

Amazon商品

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

コメント