我试图用find和sed重命名一些目录,但切换基于目录名称。使用查找和sed替换重命名目录
例子目录名:
rabbit_stand_a_e
rabbit_stand_a_ne
我希望这些改变为:
rabbit_a_stand_e
rabbit_a_stand_ne
,所以我想基本上是由分裂_和开关$ 2和大约$ 3
我试着几件事情,但不能得到任何工作,这是我现在在哪里。
find . -type d -execdir mv {} `echo {} | sed -E 's/rabbit_([a-z]+)_([abc])_/rabbit_\2_\1_/'` \;
此误差与
mv: cannot move ‘rabbit_stand_a_e’ to a subdirectory of itself, ‘rabbit_stand_a_e/rabbit_stand_a_e’
,并学会这样调试问题通过选择1个代表文件名,而不是使用'find',使用'回声rabbit_stand_a_e | sed -E'/....//'看你的问题在哪里。在这种情况下,你可以意识到'mv'需要和源以及目标参数。无论如何...祝你好运! – shellter
嗯,我以为我给了两个,'mv {} \'echo .....'{}成为当前的 – Rob
我的sed工作正常,它是独立的,就像你建议'echo rabbit_stand_a_w | sed -E's/rabbit _([az] +)_([abc])_/rabbit_ \ 2_ \ 1 _ /''所以我必须错过使用-exec或mv – Rob