変数を含まないことを除いて、解決策がある同様の質問をいくつか見つけました。
ファイルとディレクトリのツリーに特定のパターンがあります。パターンは TEMPLATE という単語です。TEMPLATE という単語を、変数 ${newName} に含まれる別の名前に置き換えて、すべてのファイルとディレクトリの名前を変更するスクリプト ファイルが必要です。
${newName} の値が「フレッドはここに住んでいます」であることがわかっている場合、コマンドは
find . -name '*TEMPLATE*' -exec bash -c 'mv "$0" "${0/TEMPLATE/Fred lives here}"' {} \;
仕事をします
ただし、私のスクリプトが次の場合:
newName="Fred lives here"
find . -name '*TEMPLATE*' -exec bash -c 'mv "$0" "${0/TEMPLATE/${newName}}"' {} \;
TEMPLATE という単語は、「Fred lives here」ではなく null に置き換えられます。
パス名にスペースがあるため、$0 の前後に "" が必要なので、次のようなことはできません。
find . -name '*TEMPLATE*' -exec bash -c 'mv "$0" "${0/TEMPLATE/"${newName}"}"' {} \;
TEMPLATEという単語を含むすべてのファイルとディレクトリがTEMPLATEの値が何であれ置き換えられるように、このスクリプトを機能させるのを手伝ってくれる人はいます${newName}
か
たとえば、ifnewName="A different name"
と a I had directory の
/foo/bar/some TEMPLATE directory/with files
次に、ディレクトリの名前が次のように変更されます
/foo/bar/some A different name directory/with files
と呼ばれるファイルはsome TEMPLATE file
名前が変更されます
some A different name file