0

ファイル内の特定のテキストを検索し、指定されたパスからそれを置き換え、テキストを置き換えた後、そのファイルの名前を特定の単語に変更するシェルスクリプトを1つ書いています。sed の使用中に許可が拒否されたというエラーが表示されます。私のスクリプトは次のようになります

`echo "Please Insert the path of the folder"
 read input_variable

    read -p "You entered: $input_variable is correct y/n  " yn

    read -p "Enter the word to find = " word
    read -p "Enter word to replace = " replace
    case $yn in
        [Yy]* ) find "${input_variable}" -type f -iname "${word}.*" | while read filename; do "`echo "${filename}" | sed -i 's/$word/$replace/g' ${filename}| sed -i 's/\$word/\$replace/' ${filename}`"; done ;;
        [Nn]* ) exit;;
        * ) echo "Please answer yes or no.";;
    esac`

以下のエラーが表示されます

bulk_rename.sh: 34: bulk_rename.sh: : 権限が拒否されました

助言がありますか ?

@vijayによる提案がスクリプトを更新した後

echo "Please Insert the path of the folder"
read input_variable

read -p "You entered: $input_variable is correct y/n  " yn

read -p "Enter the word to find = " word
read -p "Enter word to replace = " replace
case $yn in
    [Yy]* ) find "${input_variable}" -type f -iname "${word}.*" | while read filename; do 
    perl -pi -e 's/$word/$replace' ${filename}
    mv ${filename} $word;   done;;

    [Nn]* ) exit;;
    * ) echo "Please answer yes or no.";;
esac

今、私は次のようになっています


-e 行 1 で置換置換が終了していません

これは、chmodして出力を表示すると得られるものです

abc@PC-DEV-41717:~/Documents/blog$ chmod +x bulk_rename.sh ; /bin/ls -l bulk_rename.sh
chmod +x bulk_rename.sh ; /bin/ls -l bulk_rename.sh
+ chmod +x bulk_rename.sh
+ /bin/ls -l bulk_rename.sh
-rwxrwxr-x 1 abc abc 1273 Aug  1 16:51 bulk_rename.sh
4

3 に答える 3

0

私はあなたがそれを複雑にしていると思います.2つの簡単なステートメントで簡単にしてみませんか. 以下のステートメントを目的に合わせてどのように使用するかは、あなた次第です。

perl -pi -e 's/wordtofind/wordtoreplace' your_file #for replacing the word in the file

mv your_file wordtoreplace  #for renaming the file
于 2013-08-01T09:06:33.490 に答える