Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bash替换目录中的文件名_Bash_Shell - Fatal编程技术网

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

使用bash替换目录中的文件名,bash,shell,Bash,Shell,我正在编写一个bash脚本,用于将一个现有目录复制到另一个目录中,然后修改包含旧目录名称的所有文件名,并将其替换为新目录的名称 我正在使用这个命令,它工作正常 find . -depth -name '*foo*' -execdir bash -c 'for f; do mv -i "$f" "${f//foo/bar}"; done' bash {} + 但是,由于我必须对多个目标目录执行此操作,我希望上述命令中的“bar”字符串包含在一个变量中,这样我就可以在循环中更改变量的内容(迭代数组

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

必须按照以下方式修改该命令

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