我使用此命令查找具有给定模式的文件,然后将其重命名为其他内容
find . -name '*-GHBAG-*' -exec bash -c 'echo mv $0 ${0/GHBAG/stream-agg}' {} \;
Run Code Online (Sandbox Code Playgroud)
当我运行此命令时,我看到一些像这样的输出
mv ./report-GHBAG-1B ./report-stream-agg-1B
mv ./reoprt-GHBAG-0.5B ./report-stream-agg-0.5B
Run Code Online (Sandbox Code Playgroud)
但是最后,当我跑步时ls,我看到了旧的文件名.
kam*_*uel 81
你正在回应你的'mv'命令,而不是实际执行它.改成:
find . -name '*-GHBAG-*' -exec bash -c 'mv $0 ${0/GHBAG/stream-agg}' {} \;
Run Code Online (Sandbox Code Playgroud)
anu*_*umi 35
我建议使用该rename命令来执行此任务.rename根据指定为Perl正则表达式的规则重命名提供的文件名.
在这种情况下,您可以使用:
rename 's/GHBAG/stream-agg/' *-GHBAG-*
Run Code Online (Sandbox Code Playgroud)
Zac*_*Zac 17
在回复anumi的评论时,您实际上可以通过匹配'**'来递归搜索目录:
rename 's/GHBAG/stream-agg/' **/*-GHBAG-*
Run Code Online (Sandbox Code Playgroud)