我要重命名的目录结构中有大量文件。
文件名采用以下格式:
“aaaaaa-bbbbbb_cccccc-ddddd_eeeee-fffff-ggggg-hhhhh.psd”
我希望它们采用这种格式:
“Aaaaaa-Bbbbbb_Cccccc-Ddddd_Eeeee-Fffff-Ggggg-Hhhhh.psd
单个 find 和 sed 例程应该将它们转换为正确的格式:
find . -name "*psd" -exec sh -c "echo 'cp '{} `echo {} | sed 's/\([_-][a-z]\)\([A-Z]*\)/\2\U\1/g'`" \;
但它不起作用:
输入:
辅助或自动/抽象渲染/辅助或自动_abstract-render_tiny-bubbles3.psd
输出:
cp ./Assisted-or-Auto/Abstract-Render/assisted-or-auto_abstract-render_tiny-bubbles3.psd ./Assisted-or-Auto/Abstract-Render/assisted-or-auto_abstract-render_tiny-bubbles3.psd
如果我删除反引号并插入分号,sed 例程就可以工作。
find . -name "*bubbles3.psd" -exec sh -c "echo 'cp '{} ; echo {} | sed 's/\([_-][a-z]\([A-Z]*\)/\2\U\1/g'" \;
cp ./Assisted-or-Auto/Abstract-Render/assisted-or-auto_abstract-render_tiny-bubbles3.psd
./Assisted-Or-Auto/Abstract-Render/assisted-Or-Auto_Abstract-Render_Tiny-Bubbles3.psd
所以,由于某种原因,反引号没有做它应该做的事情。关于如何解决此问题的任何想法?仅供参考用“ $(cmd) ”符号替换反引号具有相同的效果
谢谢