使用bash替换目录中的文件名

时间:2016-03-14 09:44:33

标签: bash shell

我正在编写一个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 {} +

1 个答案:

答案 0 :(得分:0)

必须将命令修改为以下

$(find . -depth -name '*Workflow1*' -execdir bash -c 'for f; do mv -i "$f" "${'${strChange}'}"; done' bash {} +)