このスクリプトには問題があります。スクリプトは、すべてのファイルとすべてのサブディレクトリとサブファイルを (再帰的に) 通過することになっています。ファイルが拡張子.txtで終わる場合、テキスト内の文字/単語を新しい文字/単語に置き換えてから、既存のディレクトリにコピーする必要があります。最初の引数は検索を開始する必要があるディレクトリ、2 番目は古い文字/単語、3 番目は新しい文字/単語、4 番目はファイルをコピーするディレクトリです。スクリプトはファイルを通過しますが、置換のみを行い、元のディレクトリからファイルをコピーします。ここにスクリプトがあります
#!/bin/bash
funk(){
for file in `ls $1`
do
if [ -f $file ]
then
ext=${file##*.}
if [ "$ext" = "txt" ]
then
sed -i "s/$2/$3/g" $file
cp $file $4
fi
elif [ -d $file ]
then
funk $file $2 $3 $4
fi
done
}
if [ $# -lt 4 ]
then
echo "Need more arg"
exit 2;
fi
cw=$1
a=$2
b=$3
od=$4
funk $cw $a $b $od