我正在编写一个bash脚本,用于将现有目录复制到另一个目录中,然后修改所有包含旧目录名称的文件名,将其替换为新目录的名称。
我正在使用此命令,它工作正常
find . -depth -name '*foo*' -execdir bash -c 'for f; do mv -i "$f" "${f//foo/bar}"; done' bash {} +
但是,由于我必须对几个目标目录执行此操作,我希望上面命令中的'bar'字符串包含在变量中,因此我可以在循环中更改变量的内容(迭代数组)并批量复制和替换这些文件。
我应该对命令做些什么改变?我尝试了以下内容,但它不起作用
app="Workflow2";
strChange="f//Workflow1/"${app};
find . -depth -name '*Workflow1*' -execdir bash -c 'for f; do mv -i "$f" "${strChange}"; done' bash {} +
答案 0 :(得分:0)
必须将命令修改为以下
$(find . -depth -name '*Workflow1*' -execdir bash -c 'for f; do mv -i "$f" "${'${strChange}'}"; done' bash {} +)