Я пытаюсь переименовать некоторые каталоги с помощью find и sed, но переключая имя каталога на основе.Переименование каталогов с помощью заметок find и 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
My sed отлично работает на своем собственном уровне, как вы предлагаете' echo rabbit_stand_a_w | sed -E 's/rabbit _ ([az] +) _ ([abc]) _/rabbit_ \ 2_ \ 1 _ /' 'поэтому я должен пропустить, используя -exec или mv – Rob