我发现有几个类似的问题有解决方案,只是它们不涉及变量。使用替换和变量重命名文件和目录
我在文件和目录的树中有特定的模式 - 模式是单词模板。我想要一个脚本文件来重命名所有的文件和目录,用变量$ {newName}
中包含的一些其他名称替换单词TEMPLATE如果我知道$ {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}}"' {} \;
然后Word模板由n代替ULL而不是“弗雷德住在这里”
我需要的“”大约$ 0,因为有在路径名称空间,所以我不能做这样的事情:
find . -name '*TEMPLATE*' -exec bash -c 'mv "$0" "${0/TEMPLATE/"${newName}"}"' {} \;
谁能帮助我得到这个脚本工作,使得包含Word模板的所有文件和目录都模板代替任何的${newName}
值
例如,如果newName="A different name"
和我有
/foo/bar/some TEMPLATE directory/with files
目录,然后日Ë目录将被重新命名为
/foo/bar/some A different name directory/with files
和一个名为some TEMPLATE file
文件将被重新命名为
some A different name file
你不想'$ 0'这些表达式。 '$ 0'的值是正在运行的程序,'bash -c'脚本的值是'bash''。 你正在使用哪种类型的系统?我会寻找'rename'命令并利用它。 –
@Mark Reed。我不认为_rename_命令可以做目录。至少我不能让它工作 - 我确实尝试过。尽管* 0 *不是正确的,它的工作原理,所以我会坚持下去。 – rednectar