Linuxシェルスクリプトのオプションを使用してファイル名を変更する

Linuxシェルスクリプトのオプションを使用してファイル名を変更する

/opt/jboss/QueueStandalone/cronフォルダ内のすべてのファイル.shのファイル名を変更するには、次のコマンドを使用します。

find /opt/jboss/QueueStandalone/cron -name '*.sh' -exec sed -i -e 's/Old-name/New-name/g' {} \;

.sh私の質問は、すべてのファイルをバックアップした後、次のオプションを使用するために必要なシェルスクリプトを作成したいということです。

Old-name=
New-name=

スクリプトを使用してこれら2つの値を入力する場合は、.shすべてのファイルを変更する必要があります。

ベストアンサー1

シェル変数名にダッシュを含めることはできません。

old_name="foo"
new_name="bar"
sed -i -e "s/${old_name}/${new_name}/g"

ただし、古い名前と新しい名前に解釈可能な内容sed(ドットなど)が含まれていないことを確認してください。または、次の文字をエスケープする必要があります。

old_name="foo\.sh"
new_name="bar.sh"

しかし、全体的なアプローチが奇妙に見えます。通常、スクリプトにパラメータを渡し、次のように呼び出します。

/path/to/script "$old_name" "$new_name"

または

OLD_NAME=foo NEW_NAME=bar /path/to/script

おすすめ記事