为什么sed可以从cmd行运行,但不能在find命令中运行?

时间:2019-03-28 17:03:53

标签: unix sed find

名为30_ex_ro_ahs_cpa_emp_fpp_b1751_20190328.csv的文件需要命名为prd_b1751_03282019.csv。通过sed起作用,但不是通过find / exec / sed命令起作用

这是cmd行中使用sed进行测试的工作示例。

cmd> sed -r 's/30_ex_ro_ahs_cpa_emp_fpp_b1751_(....)(..)(..)\.csv/prd_b1751_\2\3\1.csv/g'

30_ex_ro_ahs_cpa_emp_fpp_b1751_20190328.csv

prd_b1751_03282019.csv

这是使用find,exec,mv进行重命名的无效示例:

find . -name "30_ex_ro_ahs_cpa_emp_fpp_b1751_*.csv" -exec \
    sh -c 'mv "$0" "`echo \"$0\" | \
           sed -r 's/30_ex_ro_ahs_cpa_emp_fpp_b1751_(....)(..)(..)\.csv/prd_b1751_\2\3\1.csv/g'`"' {} \;

我希望文件被重命名,但是我得到了

-ksh: syntax error: `(' unexpected

0 个答案:

没有答案