在文件中find一个模式并重命名它们
我使用这个命令来查找具有给定模式的文件,然后将它们重命名为别的
find . -name '*-GHBAG-*' -exec bash -c 'echo mv $0 ${0/GHBAG/stream-agg}' {} \; 当我运行这个命令时,我看到一些像这样的输出
 mv ./report-GHBAG-1B ./report-stream-agg-1B mv ./reoprt-GHBAG-0.5B ./report-stream-agg-0.5B 
 但是最后,当我运行ls ,我看到了旧的文件名。 
你正在呼应你的'mv'命令,而不是实际执行它。 改成:
 find . -name '*-GHBAG-*' -exec bash -c 'mv $0 ${0/GHBAG/stream-agg}' {} \; 
 我会build议使用rename命令来执行此任务。  rename命名根据指定为Perl正则expression式的规则rename命名提供的文件名。 
在这种情况下,您可以使用:
 rename 's/GHBAG/stream-agg/' *-GHBAG-* 
在回复anumi的评论时,你可以通过匹配'**'来recursionsearch目录:
 rename 's/GHBAG/stream-agg/' **/*-GHBAG-* 
这适用于我的需要,replace所有匹配的文件或文件types。 被警告,这是一个非常贪婪的search
 # bashrc function file_replace() { for file in $(find . -type f -name "$1*"); do mv $file $(echo "$file" | sed "s/$1/$2/"); done } 
 我通常会用find . -type f -name "MYSTRING*"来运行find . -type f -name "MYSTRING*"  find . -type f -name "MYSTRING*"提前更换前检查比赛。 
例如:
 file_replace "Slider.js" "RangeSlider.ts" renamed: packages/react-ui-core/src/Form/Slider.js -> packages/react-ui-core/src/Form/RangeSlider.ts renamed: stories/examples/Slider.js -> stories/examples/RangeSlider.ts 
或沟文件types,使其更贪婪
 file_replace Slider RangeSlider renamed: packages/react-ui-core/src/Form/Slider.js -> packages/react-ui-core/src/Form/RangeSlider.js renamed: stories/examples/Slider.js -> stories/examples/RangeSlider.js renamed: stories/theme/Slider.css -> stories/theme/RangeSlider.css