Вам нужно создать небольшой файл сценария, чтобы переименовать / переместить: назовите его, скажем, rnmv
и поместите в него следующую команду:
f="${1#./}"; echo mv "$f" "${f%%/*}.${f##*.}"
Не забудьте chmod +x rnmv
. Затем перейдите в корневой каталог и вызовите rnmv
из команды find
:
cd {wherever temp2 root is}
find . -name "temp2.txt" -exec rnmv "{}" \;
Когда вы будете довольны созданием правильных команд mv
, удалите echo
из rnmv
и ваше переименование / перемещение будет выполнено.
Последняя задача - удалить пустые подкаталоги:
find . -name temp2 -exec rmdir "{}" \;
Это безопасно, так как rmdir
не удалит каталог с файлами в нем. В зависимости от порядка поиска каталогов, вам может потребоваться повторить команду для таких структур, как ABC/temp2/temp2, так как temp2 не будет пустым, пока не будет удалена вторая.
Обратите внимание, что, если, скажем, ABC имеет более одного файла temp2.txt в своих подкаталогах, каждая команда mv
будет перезаписывать предыдущий ABC.txt, и после этого останется только последняя найденная.